在Pandas Dataframe 中从另一列(A-B)中删除一列内容

pn9klfpd  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(182)

我的Pandasdataframe看起来像这样:
| 鸣叫声|标签|
| - -|- -|
| 香蕉香蕉23| [香蕉23]|
| 苹果|[苹果声]|
我想执行A-B,并从tweet列中删除hashtag列的内容,获得以下内容:
| 鸣叫声|标签|
| - -|- -|
| 巴拉巴拉|[香蕉23]|
| 布拉布拉|[苹果声]|

我尝试了几种方法:

与:

def remove_hashtags(df):
    df.tweet = [df.tweet.apply(" ".join(word)) for word in df['tweet'].apply(word_tokenize) if  word not in df['hashtags']]
    return df`

我得到了TypeError: unhashable type: 'list'

def remove_hashtags(df):
    df.tweet = [df.tweet.apply(" ".join(word)) for word in df['tweet'].apply(word_tokenize) if  word not in df['hashtags'].apply(word_tokenize)]
    return df

我得到TypeError: expected string or bytes-like object
我再次尝试删除潜在的空值并将所有内容转换为字符串,但也不起作用。
我最后试着在word之前将tweet列标记为sent_tokenize

def remove_tweets(df):
    for sent in sent_tokenize(df.tweet):
        for word in word_tokenize(sent):
            df["tweet2"] = df["tweet2"].apply(" ".join(word))
    return df

但又得到了:TypeError: expected string or bytes-like object
我终于试探着:

def remove_tweets(df):
    clean_text = []
    for word in word_tokenize(df.tweet):
        if word not in df.hashtags:
            clean_text.append(word)
    df['tweet2'] = clean_text
    return df

但得到了TypeError: expected string or bytes-like object
ps在通过df['hashtags'].apply(lambda x: ','.join(map(str, x)))从列表中提取hashtags列元素后,我也尝试了我提到的所有方法,但仍然不起作用。
有什么提示吗?

58wvjzkj

58wvjzkj1#

我将在列表解析中使用正则表达式:

import re
df['tweet2'] = [re.sub(fr"\b(?:{'|'.join(l)})\b", '', t)
                for t,l in zip(df['tweet'], df['hashtag'])]

输出(为清楚起见,作为新列tweet2):

tweet       hashtag         tweet2
0  bla banana bla bla 23  [banana, 23]  bla  bla bla 
1          bla bla apple       [apple]       bla bla

要以不同方式处理空间,请执行以下操作:

import re
df['tweet2'] = [' '.join(x for x in re.split(fr"\s*\b(?:{'|'.join(l)})\b\s*", t) if x)
                for t,l in zip(df['tweet'], df['hashtag'])]

输出量:

tweet       hashtag       tweet2
0  bla banana bla bla 23  [banana, 23]  bla bla bla
1          bla bla apple       [apple]      bla bla

相关问题