我有一个熊猫数据框(df1),看起来像这样:
No car pl. Value Expected
1 Toyota HK 0.1 0.12
1 Toyota NY 0.2 NaN
2 Saab LOS 0.3 NaN
2 Saab UK 0.4 0.6
2 Saab HK 0.5 0.51
3 Audi NYU 0.6 NaN
3 Audi LOS 0.7 NaN
4 VW UK 0.8 NaN
5 Audi HK 0.9 NaN
我还有另一个数据框(df2),如下所示:
No pl. Expected
2 LOS 0.35
3 NYU 0.62
3 LOS 0.76
5 HK 0.91
我希望我的最终数据框看起来像这样:
No car pl. Value Expected
1 Toyota HK 0.1 0.12
1 Toyota NY 0.2 NaN
2 Saab LOS 0.3 0.35
2 Saab UK 0.4 0.6
2 Saab HK 0.5 0.51
3 Audi NYU 0.6 0.62
3 Audi LOS 0.7 0.76
4 VW UK 0.8 NaN
5 Audi HK 0.9 0.91
我尝试了这个:
df = df1.fillna(df1.merge(df2, on=['No','pl.']))
但是df1在输出中保持不变
我在这里看到的问题是形状相同的数据框。当形状不同时,有没有办法做到这一点?
提前致谢!
使用带suffixes
参数的左联接,然后Series.fillna
用DataFrame.pop
for和drop列替换缺少的值Expected_
:
df = df1.merge(df2, on=['No','pl.'], how='left', suffixes=('_',''))
df['Expected'] = df.pop('Expected_').fillna(df['Expected'])
print (df)
No car pl. Value Expected
0 1 Toyota HK 0.1 0.12
1 1 Toyota NY 0.2 NaN
2 2 Saab LOS 0.3 0.35
3 2 Saab UK 0.4 0.60
4 2 Saab HK 0.5 0.51
5 3 Audi NYU 0.6 0.62
6 3 Audi LOS 0.7 0.76
7 4 VW UK 0.8 NaN
8 5 Audi HK 0.9 0.91
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句