我的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列元素后,我也尝试了我提到的所有方法,但仍然不起作用。
有什么提示吗?
1条答案
按热度按时间58wvjzkj1#
我将在列表解析中使用正则表达式:
输出(为清楚起见,作为新列tweet2):
要以不同方式处理空间,请执行以下操作:
输出量: