Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果列包含任何指定的部分字符串,则保留数据帧行_Python_String_Pandas_Find_Conditional - Fatal编程技术网

Python 如果列包含任何指定的部分字符串,则保留数据帧行

Python 如果列包含任何指定的部分字符串,则保留数据帧行,python,string,pandas,find,conditional,Python,String,Pandas,Find,Conditional,我有一个熊猫数据框。下面是一个示例表 事件文本 A有事/等待发货你好 B 13579 C候船 D 24613 鄂南 我只想在文本列中保留包含单词“wait to SHIP”或在文本列中包含字符串13579或24613的行。下面是我想要的表格: 事件文本 A有事/等待发货你好 B 13579 D 24613 下面是我尝试的代码: df_STH001_2 = df_STH001[df_STH001['Text'].str.contains("AWAIT TO SHIP") == True | d

我有一个熊猫数据框。下面是一个示例表

事件文本
A有事/等待发货你好
B 13579
C候船
D 24613
鄂南
我只想在文本列中保留包含单词“wait to SHIP”或在文本列中包含字符串13579或24613的行。下面是我想要的表格:

事件文本
A有事/等待发货你好
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]
下面是我得到的错误:

ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

您不应该显式地检查
==True
,而应该使用对
包含的调用

这是你的样品:

首先,我们定义示例数据帧:

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