我有两个要合并的不均匀数据集。
只是为了记录,数据是关于用户(有一个 ID)和用户会话(也有一个 ID)。由于每个用户可以有多个会话,因此每个用户 ID 可以出现多次。因此,唯一的唯一标识符是用户 ID 和会话 ID 的组合。(简而言之,用户 ID 在用户之间是唯一的,但在用户会话之间是不明确的)。
因此,df1 包含有关每个会话的信息('unique_id')。在这些信息中,还有用户的id('ambig id')。现在,还有另一个数据框 (df2),其中包含有关用户的信息 (values1, values2)。
所以,我想在基于会话的 df (df1) 中添加来自 df2 的用户信息。示例数据框如下:
df1
ambig_id unique_id
0 1 1.1
1 2 2.1
2 3 3.1
3 4 4.1
4 1 1.2
5 2 2.2
6 3 3.2
7 4 4.2
df2
ambig_id values1 values2
0 1 101 201
1 2 102 202
2 3 103 203
3 4 104 204
4 5 105 205
5 6 106 206
6 7 107 207
7 8 108 208
8 9 109 209
9 10 110 210
想要的_df
ambig_id unique_id values1 values2
0 1 1.1 101 201
1 2 2.1 102 202
2 3 3.1 103 203
3 4 4.1 104 204
4 1 1.2 101 201
5 2 2.2 102 202
6 3 3.2 103 203
7 4 4.2 104 204
我已经通过 pd.merge_ordered 做到了:
test_df = pd.merge_ordered(df1,df2,left_by='ambig_id')
但是对于大型数据集来说似乎很慢。关于如何提高此任务的性能有什么想法吗?
(在示例数据框的代码下方)
df1 = pd.DataFrame.from_dict({'ambig_id':[1,2,3,4,1,2,3,4], 'unique_id':['1.1', '2.1', '3.1', '4.1', '1.2', '2.2', '3.2', '4.2']})
df2 = pd.DataFrame.from_dict({'ambig_id':[1,2,3,4,5,6,7,8,9,10],
'values1':[101,102,103,104,105,106,107,108,109,110],
'values2': [201, 202, 203, 204, 205,206, 207, 208, 209, 210]})
desired_df = pd.DataFrame.from_dict({'ambig_id':[1,2,3,4,1,2,3,4],
'unique_id':['1.1', '2.1', '3.1', '4.1', '1.2', '2.2', '3.2', '4.2'],
'values1': [101,102,103,104,101,102,103,104],
'values2': [201, 202, 203, 204,201, 202, 203, 204]})