python - 如何使用Series来过滤DataFrame

标签 python pandas dataframe

我有一个包含以下内容的 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 具有 ABCD 作为其指数。 df 还具有 ABCD 作为列名称.

s 中的

True 表示将保留 df 中的相应列。 s中的False表示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

最佳答案

使用boolean indexingDataFrame.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/

相关文章:

python - Pyspark 内存不足窗口函数

python - 如何在 Pandas 中将两个具有不同列标签的数据框相乘?

python - Pandas 是从不同数据帧中添加值计数的更好方法

r - 将数据框中的一列字符串转换为 R 中的数字(不是通常的类型)

python - 从 Pandas DataFrame 创建复杂的嵌套字典

r - 如何计算r数据框中多列之间的日期差异?

python - 在数据立方体中使用列表理解

python - 替换 pandas 多索引数据框中的值

python - 如何使用 selenium 在 python 中捕获所有 href 链接和循环

python - 如何清除值为 "No"而不是 NaN 的列中的值?