我有一个包含以下内容的 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
