基于索引将Pandas DataFrame中的行替换为其他DataFrame

时间:2018-12-11 15:19:28

标签: python pandas dataframe

我有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

最优雅的方法是什么?

3 个答案:

答案 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