Pandas中如果根据关键词在所有列中筛选行
时间: 2024-03-15 13:47:58 浏览: 235
在Pandas中,您可以使用`apply()`方法和`lambda`表达式来在所有列中根据关键词筛选行。假设您有一个名为`df`的DataFrame,其中包含多个列,您可以使用如下代码来筛选包含关键词的行:
``` python
filtered_df = df[df.apply(lambda row: row.astype(str).str.contains('keyword').any(), axis=1)]
```
其中,`keyword`是您要匹配的关键词,`astype(str)`将每一行的数据类型转换为字符串类型,`str.contains()`方法检查每一行中是否包含关键词,`any()`方法用于检查每一行中是否至少有一个包含关键词的列,`apply()`方法将`lambda`表达式应用到每一行中。
上述代码将在所有列中筛选包含关键词的行。如果您要匹配的关键词不区分大小写,可以使用`case=False`参数来忽略大小写,例如:
``` python
filtered_df = df[df.apply(lambda row: row.astype(str).str.contains('keyword', case=False).any(), axis=1)]
```
这样可以匹配出包含`keyword`或者`Keyword`等大小写不同的关键词。
相关问题
Pandas中如果根据关键词在多列中筛选行
在Pandas中,您可以使用`apply()`方法和`lambda`表达式来在多列中根据关键词筛选行。假设您有一个名为`df`的DataFrame,其中包含多个列,您可以使用如下代码来筛选包含关键词的行:
``` python
filtered_df = df[df.apply(lambda row: row.astype(str).str.contains('keyword').any(), axis=1)]
```
其中,`keyword`是您要匹配的关键词,`astype(str)`将每一行的数据类型转换为字符串类型,`str.contains()`方法检查每一行中是否包含关键词,`any()`方法用于检查每一行中是否至少有一个包含关键词的列,`apply()`方法将`lambda`表达式应用到每一行中。
如果您要在多个特定的列中筛选包含关键词的行,可以将这些列名放入一个列表中,并将该列表传递给`apply()`方法。例如,如果您要在`column_name1`和`column_name2`列中筛选包含关键词的行,可以使用如下代码:
``` python
filtered_df = df[df[['column_name1', 'column_name2']].apply(lambda row: row.astype(str).str.contains('keyword').any(), axis=1)]
```
上述代码将在`column_name1`和`column_name2`列中筛选包含关键词的行。
Pandas中如果根据关键词完全一致在所有列中筛选行
你可以使用 Pandas 的 `loc` 方法来根据关键词在所有列中筛选行,示例如下:
```python
import pandas as pd
# 创建一个示例 DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'city': ['New York', 'London', 'San Francisco']}
df = pd.DataFrame(data)
# 根据关键词筛选行
keyword = 'New York'
filtered_df = df.loc[df.apply(lambda row: keyword in row.values, axis=1)]
print(filtered_df)
```
以上代码会输出 DataFrame 中所有列中包含关键词 `'New York'` 的行,输出结果为:
```
name age city
0 Alice 25 New York
```
阅读全文