在推文的pandas字符串列中按单词列表查找子字符串



我有一个csv文件,它有一列clean_tweets,其中包含推文(不是拆分文本,它只是推文的整个(字符串(文本(。

我还有一个子字符串列表(下面的变量raw_lst(,并希望创建一个列表(在新列中(,该列表将包括每条推文中所有raw_lst子字符串的出现(下面的可变intensityFinal(。我还想让代码(1(允许子字符串以任何形式出现(例如,补偿、补偿等(,并且(2(对字母大小写不敏感,这样它也会选择,比如说;道歉"以及";Compens"以及

我的最终目标是有一个列,指示我的raw_lst中的子字符串在每条推文中出现的次数

这是我的代码,但它不起作用:

import numpy as np
import pandas as pd
df=pd.read_csv('tweets.csv')
raw_lst = ["apolog",
"compens"]
df['intensityFinal'] = np.empty((len(df), 0)).tolist()

for element in raw_lst:
df["intensity"]= df['tweets_clean'].str.findall(element) 
pd.concat(["intensity", "intensityFinal"])
df["intensityLength"]= df['intensityFinal'].str.len()
print(df) 

您可以通过正则表达式或提取值的|将列表的所有值连接到新列:

df=pd.read_csv('tweets.csv')
raw_lst = ["apolog",
"compens"]
df["intensityFinal"] = df['tweets_clean'].str.count('|'.join(raw_lst)) 
print (df)

编辑:对于仅提取单词compens而非recompense,请使用单词边界:

pat = '|'.join(r"b{}b".format(x) for x in raw_lst)
df["intensityFinal"] = df['tweets_clean'].str.count(pat) 

最新更新