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

Egi*_*ila 10 python dataframe pandas

我有 2 个数据帧

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
Run Code Online (Sandbox Code Playgroud)

这就是我构建它们的方式:

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)
Run Code Online (Sandbox Code Playgroud)

我想df1df2基于索引的行替换所有行,结果应如下所示:

df_result
    B   C
A       
0   300 6
1   400 7
2   433 99
3   555 99
Run Code Online (Sandbox Code Playgroud)

什么是最优雅的方式来做到这一点?

sac*_*cuL 13

这是什么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
Run Code Online (Sandbox Code Playgroud)


Sco*_*ton 8

尝试combine_first

df2.combine_first(df1)
Run Code Online (Sandbox Code Playgroud)

输出:

       B     C
A             
0  300.0   6.0
1  400.0   7.0
2  433.0  99.0
3  555.0  99.0
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 5

注意使用.loc不会改变列的类型

df1.loc[df2.index,:]=df2
df1
Out[20]: 
     B   C
A         
0  300   6
1  400   7
2  433  99
3  555  99
Run Code Online (Sandbox Code Playgroud)