【发布时间】:2021-11-20 19:51:53
【问题描述】:
我有两个数据框:
df1 = pd.DataFrame({'id1':[3,2,1,4,5],'id2':[8,7,6,9,10]})
df2 = pd.DataFrame({'id3':[6,2,8,5,4],'Name':['a','b','c','e','d']})
df1
id1 id2
3 8
2 7
1 6
4 9
5 10
df2
id3 Name
6 a
2 b
8 c
5 e
4 d
说明
-
df1 由 2 列(id1 和 id2)组成,它们代表两列的唯一值。
-
df2 由 2 列(id3 和 name)组成,它们也代表唯一值。
-
df2 的
id3 列由 df1 行中的任一值组成,其顺序也是随机的。示例 - 让我们取 id3 列的第一个值,即 6。它是通过选择 df1 的第三行的随机值制成的。类似地,2 是从 df1 的第二行中选取随机值制成的。等等..
现在我想根据 id3 列上的可用性,通过 df2 的 id3 和 df1 的 id1 或 id2 合并这两个数据帧。因此,最终的数据框将如下所示:
id1 id2 id3 Name
3 8 8 c
2 7 2 b
1 6 6 a
4 9 4 d
5 10 5 e
谁能帮我解决这个问题?
【问题讨论】:
-
为什么不使用该逻辑将
id3列添加到df1,而不是在单独的步骤中执行呢?例如,df1["id3"] = df1.apply(lambda r: random.choice(r[["id1", "id2"]]), axis=1)然后分配df1["name"] = list("abcde")? -
df1 = pd.DataFrame({'id1':[2,6,3,4,5],'id2':[6,7,8,9,10]})在df2不变的情况下的预期输出是什么? -
@ddejohn df1 和 df2 数据帧只是来自已经可用的大量实际数据帧的样本
标签: python pandas dataframe merge