Pandas 如果列包含任何指定的部分字符串,Dataframe 保留行
Pandas Dataframe Keep Row If Column Contains Any Designated Partial String
我有一个 pandas 数据框。下面是一个示例 table.
Event Text
A something/AWAIT TO SHIP hello
B 13579
C AWAITING SHIP
D 24613
E nan
我只想保留文本列中包含单词 "AWAIT TO SHIP" 或文本列中包含字符串 13579 或 24613 的行。下面是我想要的 table:
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]
下面是我得到的错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
您不应显式检查 == 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'])
那我根据你的条件做一个中间mask:
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
我有一个 pandas 数据框。下面是一个示例 table.
Event Text
A something/AWAIT TO SHIP hello
B 13579
C AWAITING SHIP
D 24613
E nan
我只想保留文本列中包含单词 "AWAIT TO SHIP" 或文本列中包含字符串 13579 或 24613 的行。下面是我想要的 table:
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]
下面是我得到的错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
您不应显式检查 == 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'])
那我根据你的条件做一个中间mask:
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