查找索引行和数据框中的每一行之间的公共非空列

时间:2019-02-06 12:23:27

标签: python pandas

我想找到在索引行和数据框之间非空列的百分比。例如:

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

预先感谢

2 个答案:

答案 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

请注意,这仅在indexSeries的情况下有效。