如果超过一半的值为零,则删除行

2024-10-17 08:33:18 发布

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

我有一个熊猫数据帧,看起来像:

ENSG0001 0, 74, 54,2
ENSG0002  0, 3, 0, 4
ENSG0003 3, 4, 2, 24

如果超过一半的值为零,我想删除任何一行。比如:

ENSG0001 0, 74, 54,2
ENSG0003 3, 4, 2, 24

有什么办法吗?你知道吗


Tags: 数据办法ensg0001ensg0002ensg0003
2条回答

IIUC公司

n=(df.shape[1]-1)//2

df[df.eq(0).sum(1)<n]
Out[589]: 
          1  2   3   4   5
0  ENSG0001  0  74  54   2
2  ENSG0003  3   4   2  24

使用^{}和布尔索引:

mask = (df.iloc[:, 1:] == 0).sum(1) >= len(df.columns[1:]) / 2
res = df[~mask]

print(res)

          0  1   2   3   4
0  ENSG0001  0  74  54   2
2  ENSG0003  3   4   2  24

相关问题 更多 >