我有一个像这样的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,然后删除该列。
答案 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)