小能豆

Pandas:根据索引和列将一个数据框的值替换为另一个数据框的值

py

我想合并/连接/用索引替换两个数据框。

df1 = pd.DataFrame(index=range(5),columns=range(5))
df1 = df1.fillna(0)

df1
    0   1   2   3   4
0   0   0   0   0   0
1   0   0   0   0   0
2   0   0   0   0   0
3   0   0   0   0   0
4   0   0   0   0   0


d = {'2': [1,0,2,0,3], '4': [0,3,0,4,0]}
df2 = pd.DataFrame(data=d)
df2 = df2.iloc[[2,3],:]
df2
    2   4
2   2   0
3   0   4

这是我尝试过的并且显示如下。

pd.concat([df1, df2], axis=1, join_axes=[df1.index])

    0   1   2   3   4   2   4
0   0   0   0   0   0   NaN NaN
1   0   0   0   0   0   NaN NaN
2   0   0   0   0   0   2.0 0.0
3   0   0   0   0   0   0.0 4.0
4   0   0   0   0   0   NaN NaN

我希望合并的数据框是这样的。

    0   1   2   3   4   
0   0   0   0   0   0   
1   0   0   0   0   0   
2   0   0   2.0 0   0   
3   0   0   0   0   4.0 
4   0   0   0   0   0

阅读 14

收藏
2024-12-18

共1个答案

小能豆

使用update注意所有方法,您需要使索引和列的 dtype 相同,这就是为什么我首先将它们转换为 int,因为当您创建 df2 时,列是 str

df2.columns=df2.columns.astype(int)
df1.update(df2)
df1
Out[961]: 
   0  1    2  3    4
0  0  0  0.0  0  0.0
1  0  0  0.0  0  0.0
2  0  0  2.0  0  0.0
3  0  0  0.0  0  4.0
4  0  0  0.0  0  0.0

或者reindex_like

df2=df2.reindex_like(df1).fillna(0)
df2
Out[964]: 
     0    1    2    3    4
0  0.0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0  0.0
2  0.0  0.0  2.0  0.0  0.0
3  0.0  0.0  0.0  0.0  4.0
4  0.0  0.0  0.0  0.0  0.0
2024-12-18