【发布时间】:2022-01-15 18:45:57
【问题描述】:
我一直在使用两个数据帧(info_clients 和 metadata_clients),它们分别有一个 user_id 和 id_wp 列 作为关联键,我将 info_clients 加载到 sql 表中并获取关联的 PK,然后将这些 dfs 合并到 user_id(左侧)和 id_wp(右侧)上。
info_clients: (72232, 1)
user_id
0 0
1 1
2 4
3 5
4 39784
元数据客户端:(72232, 2)
id id_wp
0 1158426 0
1 1158427 1
2 1158428 4
3 1158429 5
4 1158430 39784
我用过这个:
merge = pd.merge( info_clients, metadata_clients, left_on=['user_id'],
right_on=['id_wp'], how='left')
但它并没有像我预期的那样工作,我得到了这个结果:
user_id cliente_fk id_wp
0 0 1158426 0
1 1 1158427 1
2 4 1158428 4
3 5 1158429 5
4 39784 1158430 39784
Datamerge shape: (126680, 3)
当我将 info_clients 数据保存到 sql 表中时,我会验证这些数据并保存了 72232 个客户端。 我没有 null 或 nan 值,我清理了数据并检查了它的 dtypes,两个键都是 int64。
【问题讨论】:
-
如果有多个值,例如,多个
cliente_fk对应任何id_wp,您将在merge中获得多行。如果是这种情况,您需要决定如何处理“重复”。 -
你能确认是否会有任何重复吗?
-
不,我没有重复,我在上一步中删除了,使用:data.drop_duplicates(keep='first')
-
@DiegoTriana:如果我提到的情况是导致重复的原因,那么该命令不会执行任何操作,因为这些被认为是唯一的行。