如何使用系列过滤数据框

时间:2019-11-09 07:40:18

标签: python pandas dataframe

我有一个熊猫系列,内容如下。

$ import pandas as pd
$ s = pd.Series(
    data = [True, False, True, True],
    index = ['A', 'B', 'C', 'D']
    )
$ s.index.name = 'my_id'

$ print(s)

my_id
A     True
B    False
C     True
D     True
dtype: bool

和这样的DataFrame。

$ df = pd.DataFrame({
    'A': [1, 2, 9, 4],
    'B': [9, 6, 7, 8],
    'C': [10, 91, 32, 13],
    'D': [43, 12, 7, 9]
})

$ print(df)

   A  B   C   D
0  1  9  10  43
1  2  6  91  12
2  9  7  32   7
3  4  8  13   9

s具有ABCD作为索引。 df的列名称也有ABCD

True中的

s表示df中的相应列将被保留。 False中的s表示df中的相应列将被删除。

如何使用s删除B列来生成另一个DataFrame?

我的意思是我想使用sdf创建以下DataFrame。

   A   C   D
0  1  10  43
1  2  91  12
2  9  32   7
3  4  13   9

1 个答案:

答案 0 :(得分:3)

boolean indexingDataFrame.loc一起使用。 :表示过滤所有行。列由填充布尔值的Series过滤-mask

df1 = df.loc[:, s]
print (df1)

   A   C   D
0  1  10  43
1  2  91  12
2  9  32   7
3  4  13   9