熊猫计算另一个数据框列中列值的频率

时间:2019-08-21 11:29:06

标签: python-3.x pandas dataframe

我想从另一个数据帧中计算一列中一个数据帧列的值的频率。现在,我的代码如下:

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

我是熊猫新手,所以我没有做错我的事情。任何帮助表示赞赏!谢谢!

1 个答案:

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