【发布时间】:2021-04-22 11:26:31
【问题描述】:
我有两个熊猫数据框。两个数据框都有两个键列和一个值列用于合并。我想在合并结果中保持与原始索引相同的顺序。
- 其他数据框中的键和值可能丢失或更改。
- 数据的顺序很重要。您不能按合并结果中的键或值对它们进行排序。
应该是这样的:
df1_index/df2_index/results仅用于演示。
我尝试将merge 与outer 一起使用:
df1 = pd.DataFrame({
"key1": ['K', 'K', 'A1', 'A2', 'B1', 'B9', 'C3'],
"key2": ['a5', 'a4', 'a7', 'a9', 'b2', 'b8', 'c1'],
"Value1": ['apple', 'guava', 'kiwi', 'grape', 'banana', 'peach', 'berry'],
})
df2 = pd.DataFrame({
"key1": ['K', 'A1', 'A3', 'B1', 'C2', 'C3'],
"key2": ['a9', 'a7', 'a9', 'b2', 'c7', 'c1'],
"Value2": ['apple', 'kiwi', 'grape', 'banana', 'guava', 'orange'],
})
merged_df = pd.merge(df1, df2, how="outer", on=['key1', 'key2'])
但它只是在行尾添加了缺失的键:
如何合并和对齐它们?
【问题讨论】:
-
你能解释一下为什么 K-a9 应该排在 K-a4 之前吗?一个来自 DF1,另一个来自 DF2,我不明白你如何定义他们的顺序
-
@BingWang key1/key2的顺序不保证。可能是
K-a5/K-a4/K-a9。我只关心df1_index&df2_index。
标签: pandas