我想找到在索引行和数据框之间非空列的百分比。例如:
df(索引)=
A B C D E F
3 NaN 4 NaN 5 6
和df1 =
A B C D E F
1 3 5 NaN 7 NaN
NaN 2 4 NaN 3 2
7 6 NaN 5 2 NaN
2 NaN 5 NaN 7 3
,我正在寻找非null公共列的百分比。所以理想的结果是:
A B C D E F Common%
1 3 5 NaN 7 NaN 75
NaN 2 4 NaN 3 2 75
7 6 NaN 5 2 NaN 50
2 NaN 5 NaN 7 3 100
预先感谢
答案 0 :(得分:4)
您可以这样做:
JOIN ON
输出
where
您可以这样添加新列:
# create mask for non-nan values
v = ~np.isnan(df)
w = ~np.isnan(df1)
# count non zeros of intersection
a = np.count_nonzero(np.logical_and(w, v), axis=1)
# count non zeros of v (number of non-nan values in df)
b = np.count_nonzero(v)
# find common percentage
print((a / b) * 100)
输出
[ 75. 75. 50. 100.]
答案 1 :(得分:1)
如果我正确理解了您的问题,则应该这样做:
df['Common%'] = (df == index).sum() / index.shape * 100
请注意,这仅在index
是Series
的情况下有效。