gpt4 book ai didi

python-3.x - 如果所有值都等于 1,则在 pandas 中删除一列?

转载 作者:行者123 更新时间:2023-12-02 16:51:11 25 4
gpt4 key购买 nike

如何在 pandas 中删除该列中所有值都等于特定数字的列?例如,考虑这个数据框:

df = pd.DataFrame({'A': [1, 1, 1, 1],
'B': [0, 1, 2, 3],
'C': [1, 1, 1, 1]})
print(df)

输出:

   A  B  C
0 1 0 1
1 1 1 1
2 1 2 1
3 1 3 1

我将如何删除 1 列以便输出为:

   B
0 0
1 1
2 2
3 3

最佳答案

使用DataFrame.loc通过 DataFrame.ne 测试是否至少有一个非 1 值与 DataFrame.any :

df1 = df.loc[:, df.ne(1).any()]

或通过 DataFrame.eq 测试 1DataFrame.all通过 ~ 为每列的所有真值和反向掩码:

df1 = df.loc[:, ~df.eq(1).all()]

print (df1)
B
0 0
1 1
2 2
3 3

编辑:

One consideration is what do you want to happen if you have a column with Nan and 1 only?

然后用DataFrame.fillnaNaN替换为0并像以前一样使用相同的解决方案:

df1 = df.loc[:, df.fillna(0).ne(1).any()]

df1 = df.loc[:, ~df.fillna(0).eq(1).all()]

关于python-3.x - 如果所有值都等于 1,则在 pandas 中删除一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58626132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com