我想合并两个数据框,df2 可能有更多列,并且始终为 1 行。我希望 df2 行中的数据覆盖 df 中的匹配行。笔记:ser
and no
列组合在一起使行独一无二。
import pandas as pd
df = pd.DataFrame({'ser': {0: 0, 1: 0, 2: 0, 3: 1, 4: 1, 5: 1, 6: 2, 7: 2, 8: 2}, 'no': {0: 0, 1: 1, 2: 2, 3: 0, 4: 1, 5: 2, 6: 0, 7: 1, 8: 2}, 'c': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1}})
df2 = pd.DataFrame({'ser': {0: 1}, 'no': {0: 2}, 'c': {0: 88}, 'd': {0: 90}})
>>> df
ser no c
0 0 0 1
1 0 1 1
2 0 2 1
3 1 0 1
4 1 1 1
5 1 2 1
6 2 0 1
7 2 1 1
8 2 2 1
>>> df2
ser no c d
0 1 2 88 90
我尝试过 merge left 但这会创建两个 c 列(c_x 和 c_y):
>>> pd.merge(df,df2,how='left',on=['ser','no'])
ser no c_x c_y d
0 0 0 1 NaN NaN
1 0 1 1 NaN NaN
2 0 2 1 NaN NaN
3 1 0 1 NaN NaN
4 1 1 1 NaN NaN
5 1 2 1 88.0 90.0
6 2 0 1 NaN NaN
7 2 1 1 NaN NaN
8 2 2 1 NaN NaN
期望的输出:
ser no c d
0 0 0 1 NaN
1 0 1 1 NaN
2 0 2 1 NaN
3 1 0 1 NaN
4 1 1 1 NaN
5 1 2 88 90
6 2 0 1 NaN
7 2 1 1 NaN
8 2 2 1 NaN