合并将较小的数据框替换为较大的数据框
Merge with replacement of smaller dataframe to larger dataframe
我有两个如下所示的 DataFrame:
DF1:
index colA colB
id1 0 0
id2 0 0
id3 0 0
id4 0 0
id5 0 0
DF2:
index colA colB
id3 A3 B3
id4 A4 B4
id6 A6 B6
我想注入从 DF2
到 DF1
的值。我试图合并,但它不会替换值并创建更新的列。我想要的结果 DataFrame 应该是这样的:
DF1:
index colA colB
id1 0 0
id2 0 0
id3 A3 B3
id4 A4 B4
id5 0 0
id6 A6 B6
注意:如果 DF2
有一些 DF1
中不存在的索引,它应该在 DF1
中创建一个新索引。此外,列 index
是数据帧的索引,而不是列名。
这是使用 concat
+ drop_duplicates
的一种方法:
out = pd.concat((df1, df2)).reset_index().drop_duplicates(subset=['index'], keep='last').set_index('index').sort_index()
或使用reindex
+ update
:
df1 = df1.reindex(df1.index.union(df2.index))
df1.update(df2)
输出:
index colA colB
0 id1 0 0
1 id2 0 0
0 id3 A3 B3
1 id4 A4 B4
4 id5 0 0
2 id6 A6 B6
你可以试试combine_first
df1 = df1.set_index('index')
df2 = df2.set_index('index')
out = df2.combine_first(df1)
Out[217]:
colA colB
index
id1 0.0 0.0
id2 0.0 0.0
id3 A3 B3
id4 A4 B4
id5 0.0 0.0
id6 A6 B6
我有两个如下所示的 DataFrame:
DF1:
index colA colB
id1 0 0
id2 0 0
id3 0 0
id4 0 0
id5 0 0
DF2:
index colA colB
id3 A3 B3
id4 A4 B4
id6 A6 B6
我想注入从 DF2
到 DF1
的值。我试图合并,但它不会替换值并创建更新的列。我想要的结果 DataFrame 应该是这样的:
DF1:
index colA colB
id1 0 0
id2 0 0
id3 A3 B3
id4 A4 B4
id5 0 0
id6 A6 B6
注意:如果 DF2
有一些 DF1
中不存在的索引,它应该在 DF1
中创建一个新索引。此外,列 index
是数据帧的索引,而不是列名。
这是使用 concat
+ drop_duplicates
的一种方法:
out = pd.concat((df1, df2)).reset_index().drop_duplicates(subset=['index'], keep='last').set_index('index').sort_index()
或使用reindex
+ update
:
df1 = df1.reindex(df1.index.union(df2.index))
df1.update(df2)
输出:
index colA colB
0 id1 0 0
1 id2 0 0
0 id3 A3 B3
1 id4 A4 B4
4 id5 0 0
2 id6 A6 B6
你可以试试combine_first
df1 = df1.set_index('index')
df2 = df2.set_index('index')
out = df2.combine_first(df1)
Out[217]:
colA colB
index
id1 0.0 0.0
id2 0.0 0.0
id3 A3 B3
id4 A4 B4
id5 0.0 0.0
id6 A6 B6