我有两个数据帧df1和df2。 df2是df1的子集
df1 = df1=[[0,1,0,0],
[1,2,0,0],
[2,0,0,0],
[2,4,0,0]]
df1 = pd.DataFrame(df1,columns=['A','B','C','D'])
>>> df1
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 0 0
3 2 4 0 0
>>> df2
C D
2 1 3
3 2 4
我想根据索引将df2中的C和D值附加到df1中。
我的预期输出:
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4
答案 0 :(得分:2)
通知:这是inplace
,因此它将覆盖您的df1
,而无需分配
引自文档:
使用来自另一个DataFrame的非NA值进行修改。
按索引对齐。没有返回值。
df1.update(df2)
A B C D
0 0 1 0.00 0.00
1 1 2 0.00 0.00
2 2 0 1.00 3.00
3 2 4 2.00 4.00
要转换回int
,请使用DataFrame.astype
:
df1 = df1.astype(int)
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4
另一种方法(但不太优雅)是使用addition
然后使用fillna
:
(df1 + df2).fillna(df1).astype(int)
或
df1.add(df2).fillna(df1).astype(int)
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4
答案 1 :(得分:0)
另一种方法是使用reindex_like
和fillna
df_final = df2.reindex_like(df1).fillna(df1).astype(int)
Out[89]:
A B C D
0 0 1 0 0
1 1 2 0 0
2 2 0 1 3
3 2 4 2 4