我正在尝试删除非零小于所述数字的列。这是我得到的代码,但给出的答案是相同的。我在做什么错? 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
添加回答
举报
0/150
提交
取消