我有2个dataFrames
theta
这就是我构造它们的方式:
df1
B C
A
0 300 6
1 400 7
2 500 8
3 600 9
df2
B C
A
2 433 99
3 555 99
我想根据索引将df1 = pd.DataFrame({'A': [0, 1, 2, 3],
'B': [300, 400, 500, 600],
'C': [6, 7, 8, 9]})
df1.set_index('A', inplace=True)
df2 = pd.DataFrame({'A': [2, 3],
'B': [433, 555],
'C': [99, 99]})
df2.set_index('A', inplace=True)
中的所有行替换为df1
中的行,结果应如下所示:
df2
最优雅的方法是什么?
答案 0 :(得分:3)
尝试combine_first
:
df2.combine_first(df1)
输出:
B C
A
0 300.0 6.0
1 400.0 7.0
2 433.0 99.0
3 555.0 99.0
答案 1 :(得分:2)
这是update
的意思:
df1.update(df2)
>>> df1
B C
A
0 300.0 6.0
1 400.0 7.0
2 433.0 99.0
3 555.0 99.0
答案 2 :(得分:2)
使用.loc
的通知不会更改列的类型
df1.loc[df2.index,:]=df2
df1
Out[20]:
B C
A
0 300 6
1 400 7
2 433 99
3 555 99