【发布时间】:2019-06-30 21:35:19
【问题描述】:
我的第一个数据框包含一个由卡的唯一 ID (card_id) 组成的列:
treino.head(5)
card_id feature_1 feature_2 feature_3
0 C_ID_92a2005557 5 2 1
1 C_ID_3d0044924f 4 1 0
2 C_ID_d639edf6cd 2 2 0
3 C_ID_186d6a6901 4 3 0
4 C_ID_cdbd2c0db2 1 3 0
我的第二个数据框是这些卡片的传递历史:
df2.head(5)
authorized_flag card_id city_id category_1 merchant_id
0 Y C_ID_92a2005557 88 N M_ID_e020e9b302
1 Y C_ID_d639edf6cd 88 N M_ID_86ec983688
2 Y C_ID_92a2005557 88 N M_ID_979ed661fc
3 Y C_ID_92a2005557 88 N M_ID_e6d5ae8ea6
4 Y C_ID_92a2005557 88 N M_ID_e020e9b302
5 Y C_ID_4e6213e9bc 333 N M_ID_50af771f8d
6 Y C_ID_92a2005557 88 N M_ID_5e8220e564
7 Y C_ID_4e6213e9bc 3 N M_ID_9d41786a50
8 Y C_ID_d639edf6cd 88 N M_ID_979ed661fc
使用时:
merged_left = pd.merge (left = df1, right = df2, how = left, left_on = 'card_id', right_on = 'card_id')
它增加了 card_id 的行,因为在第二个数据帧中 card_id 出现了好几次。我已经把它放在左边做连接,只留下第一个数据帧的唯一 card_id,但我的问题仍然存在。
我已经明白它会增加行数,因为 df2 是购物历史,而 card_id 出现多次但我无法解决。
已经尝试过类似的方法:
df2.groupby (['card_id', 'merchant_id']). size (). reset_index ()
但我仍然有几行相同的 card_id,他们可以帮我创建一个数据框,每个唯一的 card_id 和商家 ID 各只有 1 行,我是否必须创建一个汇总数据的新变量?
【问题讨论】:
-
不确定我是否理解正确,但
merged_left.drop_duplicates(['card_id'], keep='last')会起作用吗? -
做了这项工作,它会保留card_id最常出现在df2中的merchant_id吗?