Python:如何在2个数据帧之间进行操作?

时间:2018-05-28 12:16:56

标签: python pandas

我有2个数据框df1df2包含相同项目的信息,但df1中的某些元素无法显示在df2中。

对于istance:

df1 
     id count
0     5  124
1     3  136
2     7  12
3     2  345 


df2 
     id count
0     5  65
1     7  3

我想仅针对存在的元素计算分数df1['count']/df2['count'],否则0

df3 
     id count
0     5  1.91
1     3  0
2     7  4
3     2  0 

1 个答案:

答案 0 :(得分:3)

使用mapSeries除以div,最后为未匹配的id创建NaN,将其替换为{{} 3}}:

df1['count'] = df1['count'].div(df1['id'].map(df2.set_index('id')['count'])).fillna(0)
print (df1)
   id     count
0   5  1.907692
1   3  0.000000
2   7  4.000000
3   2  0.000000

<强>详细

print (df1['id'].map(df2.set_index('id')['count']))
0    65.0
1     NaN
2     3.0
3     NaN
Name: id, dtype: float64