我想从另一个数据帧中计算一列中一个数据帧列的值的频率。现在,我的代码如下:
df2["freq"] = df1[["col1"]].groupby(df2["col2"])["col1"].transform('count')
但是对于df2 [“ col2”]中的所有值,即使对于df1 [“ col1”]中不存在的值,它的频率也为1.0。
df1:
col1
0 636
1 636
2 801
3 802
df2:
col2
0 636
1 734
2 801
3 803
添加频率列后的df2:
col2 freq
0 636 1.0
1 734 1.0
2 801 1.0
3 803 1.0
我真正想要的是
col2 freq
0 636 2
1 734 0
2 801 1
3 803 0
我是熊猫新手,所以我没有做错我的事情。任何帮助表示赞赏!谢谢!
答案 0 :(得分:1)
按Series.map
创建的系列使用Series.value_counts
,最后将缺失的值替换为0
:
df2["freq"] = df2["col2"].map(df1["col1"].value_counts()).fillna(0).astype(int)
print (df2)
col2 freq
0 636 2
1 734 0
2 801 1
3 803 0