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

时间:2019-05-14 14:58:57

标签: python pandas dataframe

我想通过索引合并/合并/两个数据框。

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

1 个答案:

答案 0 :(得分:3)

使用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