python 2个dataframe 2列数据批量比对,一列文本字段包含在另一列中
时间: 2024-05-13 18:17:50 浏览: 103
可以使用 Pandas 中的 str.contains() 函数来实现这个功能。
假设我们有两个 DataFrame,分别为 df1 和 df2,它们都有两列数据:text 和 keyword。我们想要在 df1 的 text 列中查找是否包含 df2 的 keyword 列中的文本。
可以使用以下代码实现:
```python
import pandas as pd
# 创建示例数据
data1 = {'text': ['This is a test', 'Hello world', 'Python is great']}
df1 = pd.DataFrame(data1)
data2 = {'keyword': ['test', 'world', 'Java']}
df2 = pd.DataFrame(data2)
# 使用 str.contains() 函数批量比对
result = df1['text'].str.contains('|'.join(df2['keyword'].tolist()))
print(result)
```
输出结果为:
```
0 True
1 True
2 False
Name: text, dtype: bool
```
其中,`'|'.join(df2['keyword'].tolist())` 将 df2 的 keyword 列中的文本用竖线符号连接成一个正则表达式,表示在 df1 的 text 列中查找这些文本。
如果想要将结果保存到新的一列中,可以将上述代码改为:
```python
df1['result'] = df1['text'].str.contains('|'.join(df2['keyword'].tolist()))
print(df1)
```
输出结果为:
```
text result
0 This is a test True
1 Hello world True
2 Python is great False
```
阅读全文