基于固定值删除列

2024-05-26 17:42:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图删除非零小于a的列号码。这个是我得到的代码,但它给出的是相同的回答什么我做错了吗?你知道吗

 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

如果值为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

Tags: of代码编辑numberdataframedfzerosloc
1条回答
网友
1楼 · 发布于 2024-05-26 17:42:48

我认为您需要将布尔掩码更改为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

相关问题 更多 >

    热门问题