我想从另一个数据框中计算一个数据框中的值的频率。现在,我的代码如下:
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
添加freq列后的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
我是熊猫新手,所以我没有做错我的事情。任何帮助表示赞赏!谢谢!
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句