Pandas会删除至少两列中包含0的所有行

2024-06-23 18:56:47 发布

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

我有一些数据帧:

df = pd.DataFrame({'name': ['apple1', 'apple2', 'apple3', 'apple4', 'orange1', 'orange2', 'orange3', 'orange4'], 
                   'A': [0, 0, 0, 0, 0, 0 ,0, 0], 
                  'B': [0.10, -0.15, 0.25, -0.55, 0.50, -0.51, 0.70, 0], 
                  'C': [0, 0, 0.25, -0.55, 0.50, -0.51, 0.70, 0.90],
                  'D': [0.10, -0.15, 0.25, 0, 0.50, -0.51, 0.70, 0.90]})
df
    name    A   B   C   D
0   apple1  0   0.10    0.00    0.10
1   apple2  0   -0.15   0.00    -0.15
2   apple3  0   0.25    0.25    0.25
3   apple4  0   -0.55   -0.55   0.00
4   orange1 0   0.50    0.50    0.50
5   orange2 0   -0.51   -0.51   -0.51
6   orange3 0   0.70    0.70    0.70
7   orange4 0   0.00    0.90    0.90

我想删除A,B,C,D列中有两个或更多零的所有行

此数据帧具有其他具有零的列我只想检查A,B,C,D列中的零。


Tags: 数据namedataframedfpdorange3apple1apple4
1条回答
网友
1楼 · 发布于 2024-06-23 18:56:47

您可以使用^{}检查数据帧是否等于0,然后在axis=1上取^{},并通过检查和是否大于或等于2(^{})返回布尔序列:

df[~df[['A','B','C','D']].eq(0).sum(1).ge(2)]

    name    A   B   C   D
2   apple3  0   0.25    0.25    0.25
4   orange1 0   0.50    0.50    0.50
5   orange2 0   -0.51   -0.51   -0.51
6   orange3 0   0.70    0.70    0.70

相关问题 更多 >

    热门问题