当我用布尔索引想筛选多列应该怎么写
时间: 2024-10-28 13:08:05 浏览: 7
当你想通过布尔索引同时筛选多列的数据时,在Pandas DataFrame中,你需要将多个条件放在一个布尔数组里。这个布尔数组会被用于选择满足所有条件的行。下面是一个例子:
假设你有DataFrame `df`,你想筛选出`column1`的值大于`val1`并且`column2`的值小于`val2`的行,可以这样做:
```python
import pandas as pd
# 假设 df 是你的 DataFrame,column1 和 column2 是你要筛选的列
mask = (df['column1'] > val1) & (df['column2'] < val2)
# 使用布尔索引筛选
filtered_df = df[mask]
```
在这个例子中,`&` 符号表示“逻辑与”,意味着只有当 `column1` 的值大于 `val1` 并且 `column2` 的值小于 `val2` 时,该行才会被包含在新的 `filtered_df` 中。
如果你想筛选的条件更复杂,也可以使用字典来构建多列的条件,例如:
```python
conditions = {'column1': [val11, val12], 'column2': [val21, val22]}
mask = df[list(conditions.keys())].apply(lambda x: x.isin(conditions[x.name]), axis=0).all(axis=1)
filtered_df = df[mask]
```
在这里,`isin()` 函数用于检查每列的值是否在给定的列表中。
阅读全文