gpt4 book ai didi

python - 如果超过 K 行中有零,则删除 Pandas Dataframe 列

转载 作者:行者123 更新时间:2023-11-30 22:47:43 24 4
gpt4 key购买 nike

我有以下数据框:

import pandas as pd
df = pd.DataFrame({'id':['a','b','c','d','e'],
'A':[-14,-90,-90,-96,-91],
'B':[-103,0,-110,-114,-114],
'D':[0,0,0,0,0],
'C':[-101,0,-110,0,0]})

看起来像这样:

    A    B    C  D id
0 -14 -103 -101 0 a
1 -90 0 0 0 b
2 -90 -110 -110 0 c
3 -96 -114 0 0 d
4 -91 -114 0 0 e

我想要做的是,如果超过2行中有0,则执行删除任何列的操作。我怎样才能实现这一目标?

最终将得到包含此列的数据框:A、B、id。

最佳答案

您可以使用cumsumany对于面具,然后做了一些改变boolean indexing按列选择:

mask = ((df == 0).cumsum() > 1).any()
print (mask)
A False
B False
C True
id False
dtype: bool

print (df.ix[:, ~mask])
A B id
0 -14 -103 a
1 -90 0 b
2 -90 -110 c
3 -96 -114 d
4 -91 -114 e

掩码说明:

print (df == 0)
A B C id
0 False False False False
1 False True True False
2 False False False False
3 False False True False
4 False False True False

print ((df == 0).cumsum())
A B C id
0 0 0 0 0
1 0 1 1 0
2 0 1 1 0
3 0 1 2 0
4 0 1 3 0

print ((df == 0).cumsum() > 1)
A B C id
0 False False False False
1 False False False False
2 False False False False
3 False False False False
4 False False True False

通过评论编辑 - 需要 all对于面具:

mask = (df == 0).all()
print (mask)
A False
B False
C False
D True
id False
dtype: bool

print (df.ix[:, ~mask])
A B C id
0 -14 -103 -101 a
1 -90 0 0 b
2 -90 -110 -110 c
3 -96 -114 0 d
4 -91 -114 0 e

关于python - 如果超过 K 行中有零,则删除 Pandas Dataframe 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40416991/

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