使用dataframe中的行值来查询第二个数据帧中的列

时间:2017-11-21 23:13:45

标签: python pandas dataframe

我希望传递来自df['A']的值,以确定df2中具有df1行值的列标题的空值计数和唯一值计数。

df
A    B    C
AA   1    2
AB   1    3
AC   1    2


df2
AA    AB    AC
X     Null  F
Null  R     F
Null  R     Y

代码应输出如下:

df1
A    B    C    NullCount UniqueCount
AA   1    2    2         1
AB   1    3    1         1
AC   1    2    0         2

我考虑过定义一个函数,然后将其应用到df1,但我不确定这是否是最好的方法。我是python的新手所以感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

v0.20开始,您可以使用agg + merge

df

    A  B  C
0  AA  1  2
1  AB  1  3
2  AC  1  2

df2

    AA   AB AC
0    X  NaN  F
1  NaN    R  F
2  NaN    R  Y
df3 = df2.agg(['count', 'nunique']).T
df3['count'] = df2.isnull().count(1).values - df3['count']

df.merge(df3.rename_axis('A', 0).reset_index())

    A  B  C  count  nunique
0  AA  1  2      2        1
1  AB  1  3      1        1
2  AC  1  2      0        2

或者,您可以将count计算与lambda:

合并为一步
df3 = df2.agg([lambda x: x.size - x.count(), 'nunique']).T
df3.columns = ['NullCount', 'UniqueCount']

    A  B  C  NullCount  UniqueCount
0  AA  1  2          2            1
1  AB  1  3          1            1
2  AC  1  2          0            2

请注意,您可能需要转换字符串" Null"到nan。您可以通过replace电话执行此操作:

df2 = df2.replace("Null", np.nan)