3 回答
TA贡献1854条经验 获得超8个赞
使用 update
df=df.set_index(['start','end'])
df.update(df1.set_index(['start','end']))
df.reset_index()
Out[99]:
start end price
0 A Z 100.0
1 B Y 200.0
2 C X 3.0
3 A Z 100.0
4 D W 5.0
TA贡献1817条经验 获得超6个赞
首先,您可以合并:
s = df1.merge(df2, left_on=['start', 'end'], right_on=['start', 'end'], how='left')
然后你可以fillna索引你想要的列:
s.assign(price=s.price_y.fillna(s.price_x))[['start', 'end', 'price']]
start end price
0 A Z 100.0
1 B Y 200.0
2 C X 3.0
3 A Z 100.0
4 D W 5.0
TA贡献1864条经验 获得超6个赞
merge
df.drop('price', 1).merge(df1, 'left').fillna(df)
start end price
0 A Z 100.0
1 B Y 200.0
2 C X 3.0
3 A Z 100.0
4 D W 5.0
我要合并,
['start', 'end']
而那个讨厌price
的人会妨碍我。所以,我放弃了。我需要保存
df
索引,因为我有那重复'A'
和'Z'
。所以,我使用一个'left'
merge
现在我丢失的元素可以用
df
添加回答
举报