我有一个包含以下内容的 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
关于python - 如何使用Series来过滤DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58777355/