Pandas中如果根据关键词在多列中筛选行
时间: 2024-03-15 13:47:49 浏览: 263
在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中,您可以使用`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中,您可以使用`str.contains()`方法来根据关键词筛选行。假设您有一个名为`df`的DataFrame,其中包含多个列,您可以使用如下代码来筛选包含关键词的行:
``` python
filtered_df = df[df['column_name'].str.contains('keyword')]
```
其中,`column_name`是您要筛选的列名,`keyword`是您要匹配的关键词。如果您要筛选的列有多个,可以在选择列时使用列表的方式来选择多个列,例如:
``` python
filtered_df = df[['column_name1', 'column_name2']][df['column_name1'].str.contains('keyword') | df['column_name2'].str.contains('keyword')]
```
上述代码将选择`column_name1`和`column_name2`列,并且筛选包含`keyword`的行。如果您要匹配的关键词不区分大小写,可以使用`case=False`参数来忽略大小写,例如:
``` python
filtered_df = df[df['column_name'].str.contains('keyword', case=False)]
```
这样可以匹配出包含`keyword`或者`Keyword`等大小写不同的关键词。
阅读全文