我有一个pandas数据框。下面是一个示例表。
{"field":"value"...}
我想只保留包含单词" AWAIT TO SHIP"在“文本”列中或在“文本”列中包含字符串13579或24613。下面是我想要的表格:
Event Text
A something/AWAIT TO SHIP hello
B 13579
C AWAITING SHIP
D 24613
E nan
以下是我尝试的代码:
Event Text
A something/AWAIT TO SHIP hello
B 13579
D 24613
以下是我得到的错误:
df_STH001_2 = df_STH001[df_STH001['Text'].str.contains("AWAIT TO SHIP") == True | df_STH001['Text'].str.contains("13579") == True | df_STH001['Text'].str.contains("24613") == True]
答案 0 :(得分:1)
您不应该明确核对== True
,而只需使用对contains
的调用。
这是你的样本:
首先,我们定义示例数据框:
df1 = pd.DataFrame(data=[
('A', 'something/AWAIT TO SHIP hello'),
('B', 13579),
('C', 'AWAITING SHIP'),
('D', 24613),
('E', np.nan)], columns=['Event', 'Text'])
然后我根据你的条件建立一个中间面具:
In [18]: mask = df1.Text.str.contains('AWAIT TO SHIP') | \
df1.Text.str.contains('13579') | \
df1.Text.str.contains('24613')
现在,您可以使用此掩码索引原始数据帧。
In [19]: df1.loc[mask]
Out[19]:
Event Text
0 A something/AWAIT TO SHIP hello