我有一个带有文本列“描述”的数据框,并且我有一个搜索字符串列表:
search = ['FR-001', 'FR-002, 'FR-003', 'FR-004']
Run Code Online (Sandbox Code Playgroud)
我想使用搜索列表中的字符串搜索数据框。我用了:
df.loc[df['Description'].str.contains('|'.join(search), na=False)]
Run Code Online (Sandbox Code Playgroud)
我得到了所需的结果,所有行都正确返回。
如何将每个成功的搜索字符串添加到新数据框列“FR”中的匹配行?
编辑
5 行描述列和预期结果列 FR
我认为你需要findall:
使用@AndreyF的样本数据:
search = ['FR-001', 'FR-002', 'FR-003', 'FR-004']
df['FR'] = df['Description'].str.findall('(' + '|'.join(search) + ')')
print (df)
Description FR
0 AasfasfFR-001,asfasdfafsagsdg FR-002 [FR-001, FR-002]
1 AasfasfFR-004, FR-002 [FR-004, FR-002]
2 AasfasfFR-02,asfasdfafsagsdg []
3 AasfasfFR-001,asfasdfafsagsdg FR-003 [FR-001, FR-003]
4 AasfasfFR-004,asfasdfafsagsdg FR-002 [FR-004, FR-002]
Run Code Online (Sandbox Code Playgroud)
如果需要过滤掉空列表:
df = df[df['FR'].astype(bool)]
print (df)
Description FR
0 AasfasfFR-001,asfasdfafsagsdg FR-002 [FR-001, FR-002]
1 AasfasfFR-004, FR-002 [FR-004, FR-002]
3 AasfasfFR-001,asfasdfafsagsdg FR-003 [FR-001, FR-003]
4 AasfasfFR-004,asfasdfafsagsdg FR-002 [FR-004, FR-002]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6105 次 |
| 最近记录: |