根据固定值删除列

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


 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


炎炎设计
浏览 173回答 1
1回答

桃花长相依

我认为你需要改变的布尔掩码df.eq(0)是一样df == 0与改变的状况从<=到<:max_number_of_zeros = 2df&nbsp; = df.loc[:,df.eq(0).sum(axis=0) < max_number_of_zeros]print (df)&nbsp; &nbsp;0&nbsp; 20&nbsp; 1&nbsp; 01&nbsp; 2&nbsp; 12&nbsp; 0&nbsp; 33&nbsp; 1&nbsp; 1详细说明:print (df.eq(0))&nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; 30&nbsp; False&nbsp; &nbsp;True&nbsp; &nbsp;True&nbsp; &nbsp;True1&nbsp; False&nbsp; &nbsp;True&nbsp; False&nbsp; &nbsp;True2&nbsp; &nbsp;True&nbsp; False&nbsp; False&nbsp; False3&nbsp; False&nbsp; False&nbsp; False&nbsp; Falseprint (df.eq(0).sum(axis=0))0&nbsp; &nbsp; 11&nbsp; &nbsp; 22&nbsp; &nbsp; 13&nbsp; &nbsp; 2dtype: int64编辑:max_number_of_zeros = 2df&nbsp; = df.loc[:,len(df.columns) - df.astype(bool).sum(axis=0) < max_number_of_zeros]print (df)&nbsp; &nbsp;0&nbsp; 20&nbsp; 1&nbsp; 01&nbsp; 2&nbsp; 12&nbsp; 0&nbsp; 33&nbsp; 1&nbsp; 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python