pandas中一列DataFrame包含多余的文本,想通过一列关键词进行比对,如果关键词在该文本中则返回关键词
时间: 2023-03-30 14:03:17 浏览: 43
可以使用str.contains()方法来实现,例如:
df['关键词匹配列'] = df['文本列'].str.contains('关键词')
其中,df为你的DataFrame,'文本列'为包含多余文本的列,'关键词'为你要匹配的关键词。这样,如果该文本中包含关键词,'关键词匹配列'对应的值就会为True,否则为False。
相关问题
pandas中一列DataFrame下的Series包含多余的文本内容,想通过循环比对现有的关键字列表并赋值到新的列中怎么写
您可以使用apply函数和lambda表达式来实现这个功能。首先,您需要定义一个包含关键字的列表,然后使用apply函数和lambda表达式将每个Series值与关键字列表进行比较,并将匹配的关键字赋值到新的列中。以下是示例代码:
```
import pandas as pd
# 定义关键字列表
keywords = ['apple', 'banana', 'orange']
# 创建DataFrame
df = pd.DataFrame({'fruits': ['apple is good', 'banana is sweet', 'orange is juicy']})
# 定义函数,将Series值与关键字列表进行比较
def find_keyword(x):
for keyword in keywords:
if keyword in x:
return keyword
return 'no match'
# 使用apply函数和lambda表达式将匹配的关键字赋值到新的列中
df['keyword'] = df['fruits'].apply(lambda x: find_keyword(x))
# 打印结果
print(df)
```
输出结果如下:
```
fruits keyword
apple is good apple
1 banana is sweet banana
2 orange is juicy orange
```
python dataframe 2列数据批量比对,一列文本字段包含在另一列中
您可以使用 Pandas 库来完成这个任务。假设您的 DataFrame 名称为 df,其中包含两列数据,分别为 text 和 keyword。要比较 text 列中的每个文本是否包含在 keyword 列中,可以使用以下代码:
```
df['match'] = df.apply(lambda row: row['text'] in row['keyword'], axis=1)
```
这将在 DataFrame 中添加一个名为 match 的新列,其中包含布尔值,表示 text 列中的每个文本是否包含在 keyword 列中。如果匹配,则为 True,否则为 False。
您还可以使用 str.contains() 函数在 Pandas 中执行此操作,如下所示:
```
df['match'] = df['keyword'].str.contains(df['text'])
```
这将在 DataFrame 中添加一个名为 match 的新列,其中包含布尔值,表示 text 列中的每个文本是否包含在 keyword 列中。如果匹配,则为 True,否则为 False。
请注意,这些方法都是区分大小写的。如果您需要执行不区分大小写的比较,请使用 str.lower() 函数将列中的文本转换为小写。例如:
```
df['match'] = df.apply(lambda row: row['text'].lower() in row['keyword'].lower(), axis=1)
```
或者:
```
df['match'] = df['keyword'].str.lower().contains(df['text'].str.lower())
```