Python Pandas-删除至少两列中包含0的所有行
我有一些数据帧:Python Pandas-删除至少两列中包含0的所有行,python,pandas,Python,Pandas,我有一些数据帧: 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],
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列中的零。您可以使用来检查dataframe是否等于0,然后取axis=1,并通过检查总和是否大于或等于2来返回布尔序列:
这很有效。唯一的注释是删除这些行:df[~df[['A','B','C','D']].eq0.sum1.ge2]@BuffaloCollector-ah好的,是的:谢谢,我错过了必须删除它们的部分
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