Python 通过在文本块中查找关键字来筛选dataframe

Python 通过在文本块中查找关键字来筛选dataframe,python,pandas,Python,Pandas,我正在数据框中处理Twitter数据。我想根据文本中找到的某个关键字过滤包含每条推文文本的列 我尝试了str.contains,但没有成功,因为该列是一个系列。我想过滤“文本”列中包含关键字“remoaners”的所有推文 remoaners_only = time_plus_text[time_plus_text["text"].str.contains("remoaners", case=False, na=False)] 这会产生一个空数据帧或大量NAN 熊猫版本是0.24.1 以下是输

我正在数据框中处理Twitter数据。我想根据文本中找到的某个关键字过滤包含每条推文文本的列

我尝试了str.contains,但没有成功,因为该列是一个系列。我想过滤“文本”列中包含关键字“remoaners”的所有推文

remoaners_only = time_plus_text[time_plus_text["text"].str.contains("remoaners", case=False, na=False)]
这会产生一个空数据帧或大量NAN

熊猫版本是0.24.1

以下是输入数据:时间加文本[“文本”]。头(10)


你的代码可以工作。因此,您需要检查您的输入数据或pandas bug修复版本,0.24.1 vs 0.24.2

0.24.2
   index                                               text
0      0     [ #bbcqt Remoaners on about post Brexit rac...
将熊猫作为pd导入
导入系统
如果系统版本信息[0]<3:
从StringIO导入StringIO
其他:
从io导入StringIO
打印(pd.\U版本\U)
csvdata=StringIO(““”0,[#bbcqt对英国脱欧后的种族歧视进行了反思。。。
1,[@sarahwollaston闭嘴,你喜欢所有的remoane。。。
2、[布雷克斯特主义者曾经为我们做过什么。。。
3、[奇异爆发中的雷蒙纳]
4、[任何不同意英国脱欧的人都被称为n。。。
5、[@SkyNewsBreak他们预测如果投票结果。。。
6、[但我们要离开欧盟,甚至是保守党。。。
7、[未经选举的远程用户是否可以不看到abs。。。
8、[@sizjam68@LeaveEUOfficial@johnredwood It。。。
9、[嘿@BBC,你解释过为什么获奖吗
df=pd.read_csv(csvdata,names=[“index”,“text”],sep=“,”)
result=df[df[“text”].str.contains(“remoaners”,case=False,na=False)]
#结果
打印(结果)

您的代码运行正常。因此,您需要检查输入数据或pandas bug fix版本,0.24.1 vs 0.24.2

0.24.2
   index                                               text
0      0     [ #bbcqt Remoaners on about post Brexit rac...
将熊猫作为pd导入
导入系统
如果系统版本信息[0]<3:
从StringIO导入StringIO
其他:
从io导入StringIO
打印(pd.\U版本\U)
csvdata=StringIO(““”0,[#bbcqt对英国脱欧后的种族歧视进行了反思。。。
1,[@sarahwollaston闭嘴,你喜欢所有的remoane。。。
2、[布雷克斯特主义者曾经为我们做过什么。。。
3、[奇异爆发中的雷蒙纳]
4、[任何不同意英国脱欧的人都被称为n。。。
5、[@SkyNewsBreak他们预测如果投票结果。。。
6、[但我们要离开欧盟,甚至是保守党。。。
7、[未经选举的远程用户是否可以不看到abs。。。
8、[@sizjam68@LeaveEUOfficial@johnredwood It。。。
9、[嘿@BBC,你解释过为什么获奖吗
df=pd.read_csv(csvdata,names=[“index”,“text”],sep=“,”)
result=df[df[“text”].str.contains(“remoaners”,case=False,na=False)]
#结果
打印(结果)

问题在于,要在中查找子字符串
remoaners
的字符串包含在每个单元格的
列表中。在执行
str之前,您需要通过执行
str[0]
来访问此字符串。该字符串包含以下内容:

# input
time_plus_text = pd.DataFrame({'text':[['#bbcqt Remoaners on about post Brexit racial...'], 
                                       ['@sarahwollaston Shut up, you like all remoaners...'],
                                       ['what have the Brextremists ever done for us ...']]})
print (time_plus_text["text"].str[0].str.contains("remoaners", case=False, na=False))
0     True
1     True
2    False
Name: text, dtype: bool
所以你应该:

remoaners_only = time_plus_text[time_plus_text["text"].str[0]\
                                             .str.contains("remoaners", case=False, na=False)]

问题是,要在中查找子字符串
remoaners
的字符串包含在每个单元格的
列表中。在执行
str之前,您需要通过执行
str[0]
来访问此字符串。str.contains
包括:

# input
time_plus_text = pd.DataFrame({'text':[['#bbcqt Remoaners on about post Brexit racial...'], 
                                       ['@sarahwollaston Shut up, you like all remoaners...'],
                                       ['what have the Brextremists ever done for us ...']]})
print (time_plus_text["text"].str[0].str.contains("remoaners", case=False, na=False))
0     True
1     True
2    False
Name: text, dtype: bool
所以你应该:

remoaners_only = time_plus_text[time_plus_text["text"].str[0]\
                                             .str.contains("remoaners", case=False, na=False)]

欢迎使用stackoverflow,如果您共享一些输入数据以重现您的问题,人们会更容易帮助您。这里是您专栏的前几行
time\u plus\u text[“text”]
。有关更多详细信息,请参阅。您是否可以添加示例数据?我想这应该可以。您使用的熊猫是什么?更新了,谢谢您的提示,希望它现在更清晰。欢迎使用stackoverflow,如果您共享一些输入数据以重现您的问题,人们会更容易帮助您。这将是您专栏的前几行。
time\u plus\u text[“text”]
。有关更多详细信息,请参阅添加示例数据吗?我认为这应该可以。您使用的是哪只熊猫?更新,谢谢提示,希望现在更清晰