Skip to main content
 首页 » 编程设计

python之如何使用 Series 来过滤 DataFrame

2024年08月12日29pengyingh

我有一个包含以下内容的 Pandas 系列。

$ 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 有 A、B、C 和 D 作为它的指数。 df 也有 A、B、C 和 D 作为列名.

s 中的

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

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

我的意思是我想使用 s 和 df 创建以下 DataFrame。

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

请您参考如下方法:

使用boolean indexing与 DataFrame.loc . : 表示过滤所有行。列由填充 bool 值的 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