pandas删除0出现次数最多

时间:2016-06-29 09:12:02

标签: python pandas

我有一个像这样的DataFrame:

a   b   c   d
1   0   0   0
0   1   0   7
5   2   0   4
6   3   0   0
0   0   8   8
0   7   7   7
0   0   0   1

1:每行,如果0的计数>列数的90%(在这种情况下:平均值:0.9 * 4),则删除该行。

2:如果0的计数大于行计数的90%(在这种情况下:平均值:0.9 * 7),则每列都f,然后删除该列。

2 个答案:

答案 0 :(得分:1)

我想你想要这样的东西:

mask_rows = pd.DataFrame.sum(df == 0, axis=1) > 0.9*len(df.columns)
mask_cols = pd.DataFrame.sum(df == 0, axis=0) > 0.9*len(df.columns)

在我解释你的问题之后,这会创建一个掩码......

答案 1 :(得分:0)

首先创建一个显示零位的掩码:

df_temp = (df == 0)

然后删除行:

df.drop(df_temp.mean(axis = 1) > 0.9,inplace = True)

最后是专栏:

df.drop(df_temp.mean() > 0.9, 1, inplace = True)