python - 通过推文的pandas字符串列中的单词列表查找子字符串
问题描述
我有一个 csv 文件,其中有一列clean_tweets
包含推文(不是拆分文本,它只是推文的整个(字符串)文本)。
我还有一个子字符串列表(raw_lst
下面的变量),并想创建一个列表(在一个新列中),其中包括raw_lst
每条推文中所有子字符串的出现(intensityFinal
下面的变量)。我还想让代码(1)允许子字符串以任何形式出现(例如,补偿、补偿等)和(2)对字母的大小写不敏感,这样它也可以选择,比如“道歉”以及“补偿”
我的最终目标是有一个列来指示我的子字符串在每条推文中出现了多少次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)
推荐阅读
- python-3.x - 在 model.fit() 中指定验证数据时出现尺寸错误
- unity3d - Unity 中的按钮脚本问题
- javascript - Exists 属性正在崩溃脚本
- java - 光标更改
- .net - 如何使生产就绪 Angular Dotnet Core Docker 应用程序
- python - 在 Python 中交换表达式中的表达式(交换三个及更多 var)
- scala - SparkSession 不存在
- testing - 每个环境是否可以在 TestCafe 1.x 中有多个 .testcaferc.json 文件?
- c# - 将整数列表添加到整数列表列表中
- ruby-on-rails - Rails:未登录用户对页面的访问受限