根据固定值删除列

时间:2018-07-01 16:23:06

标签: python pandas

我正在尝试删除非零小于所述数字的列。这是我得到的代码,但给出的答案是相同的。我在做什么错?

 df = pd.DataFrame([[1,0,0,0], [0,0,1,0]])



   0  1  2  3
0  1  0  0  0
1  0  0  1  0

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

   0  1  2  3
0  1  0  0  0
1  0  0  1  0

编辑- 例子-

   0  1  2  3
0  1  0  0  0
1  2  0  1  0
2  0  2  3  4
3  1  1  1  1

输出将是value = 2的第0列和第2列

 0  1  2  3
0  1  0  0  0
1  2  0  1  0
2  0  2  3  4
3  1  1  1  1

1 个答案:

答案 0 :(得分:1)

我认为您需要将布尔型掩码更改为role Auto-Instantiate { method AT-KEY (|) is raw { my \result = callsame; result .= new unless defined result; result } } my Hash[Real,Real] %h{Real} does Auto-Instantiate; ,将其与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