pandas筛选符合条件的列
时间: 2023-09-09 20:10:08 浏览: 47
你可以使用 pandas 库中的布尔索引来筛选符合条件的列。假设你有一个名为 df 的 DataFrame,你可以使用以下方式筛选符合条件的列:
```python
df[df['column_name'] condition]
```
其中,column_name 是你要筛选的列的名称,condition 是一个布尔表达式,用于筛选符合条件的行。例如,如果你想筛选出 'age' 列中大于 18 岁的行,你可以使用以下代码:
```python
df[df['age'] > 18]
```
这将返回一个新的 DataFrame,其中只包含 'age' 列中大于 18 岁的行。你可以在条件中使用其他比较运算符(如 <、>=、<=、==、!=)和逻辑运算符(如 &、|、~)来进行更复杂的筛选。
相关问题
pandas 筛选符合条件的索引
在 pandas 中,我们可以使用布尔索引(Boolean indexing)来筛选符合条件的数据。布尔索引是一种通过传递布尔值(True 或 False)来选择数据的方法。其原理是:对于一个DataFrame或Series对象,我们可以将条件表达式应用到数据集上,返回的是一个由布尔值组成的DataFrame或Series对象,对于表中每一行或每一个元素,如果满足条件,那么相应的位置就会返回True,否则就会返回False。可以使用这个布尔型的DataFrame或Series对象作为索引,从而得到我们想要的数据。
举个例子,假设我们有以下的一个DataFrame对象df:
```
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': np.random.randn(8),
'D': np.random.randn(8)})
print(df)
```
输出结果如下:
```
A B C D
0 foo one 0.171342 -1.256501
1 bar one -1.426386 -1.103743
2 foo two 0.877635 -0.938616
3 bar three 0.213667 -0.305198
4 foo two -1.081901 -1.291754
5 bar two -1.228686 -0.170729
6 foo one -0.112596 -1.021848
7 foo three 0.300287 -0.099065
```
我们想要筛选出所有A列中值为'foo'的行,可以使用以下代码:
```
df[df['A'] == 'foo']
```
输出结果如下:
```
A B C D
0 foo one 0.171342 -1.256501
2 foo two 0.877635 -0.938616
4 foo two -1.081901 -1.291754
6 foo one -0.112596 -1.021848
7 foo three 0.300287 -0.099065
```
这里我们首先使用了一个条件表达式df['A'] == 'foo',返回的是一个由布尔值组成的Series对象。然后我们将这个Series对象作为索引传递给df,得到了我们想要的结果。
pandas 多个条件筛选多列
在 pandas 中,可以使用 loc 方法进行多条件筛选多列数据。例如,需要筛选出 column1、column2 和 column3 中符合以下两个条件的数据:
1. column1 中的值大于 10;
2. column2 中的值小于 5。
可以使用以下代码实现:
```python
df_filtered = df.loc[(df['column1'] > 10) & (df['column2'] < 5), ['column1', 'column2', 'column3']]
```
其中,第一个参数 `(df['column1'] > 10) & (df['column2'] < 5)` 表示两个条件的逻辑与,第二个参数 `['column1', 'column2', 'column3']` 表示需要筛选的列名。
如果需要使用逻辑或,可以使用 `|` 进行连接,例如:
```python
df_filtered = df.loc[(df['column1'] > 10) | (df['column2'] < 5), ['column1', 'column2', 'column3']]
```
这将筛选出 column1、column2 和 column3 中,满足以下两个条件之一的数据:
1. column1 中的值大于 10;
2. column2 中的值小于 5。