我希望传递来自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的新手所以感谢任何帮助。
答案 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)