我有2个数据框df1
和df2
包含相同项目的信息,但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
答案 0 :(得分:3)
使用map
新Series
除以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