为了账号安全,请及时绑定邮箱和手机立即绑定

根据固定值删除列

根据固定值删除列

炎炎设计 2021-04-01 14:15:46
我正在尝试删除非零小于所述数字的列。这是我得到的代码,但给出的答案是相同的。我在做什么错? df = pd.DataFrame([[1,0,0,0], [0,0,1,0]])   0  1  2  30  1  0  0  01  0  0  1  0df = df.loc[:, (df.astype(bool).sum(axis=0) <= max_number_of_zeros)]   0  1  2  30  1  0  0  01  0  0  1  0编辑-示例-   0  1  2  30  1  0  0  01  2  0  1  02  0  2  3  43  1  1  1  1输出将是value = 2的第0列和第2列 0  1  2  30  1  0  0  01  2  0  1  02  0  2  3  43  1  1  1  1
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

我认为你需要改变的布尔掩码df.eq(0)是一样df == 0与改变的状况从<=到<:


max_number_of_zeros = 2

df  = df.loc[:,df.eq(0).sum(axis=0) < max_number_of_zeros]

print (df)

   0  2

0  1  0

1  2  1

2  0  3

3  1  1

详细说明:


print (df.eq(0))

       0      1      2      3

0  False   True   True   True

1  False   True  False   True

2   True  False  False  False

3  False  False  False  False


print (df.eq(0).sum(axis=0))

0    1

1    2

2    1

3    2

dtype: int64

编辑:


max_number_of_zeros = 2

df  = df.loc[:,len(df.columns) - df.astype(bool).sum(axis=0) < max_number_of_zeros]

print (df)

   0  2

0  1  0

1  2  1

2  0  3

3  1  1


查看完整回答
反对 回复 2021-04-20
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信