【发布时间】:2019-08-25 21:46:35
【问题描述】:
我正在尝试解决合并两个数据集的问题。让我们看一个例子:
borrowed_money = {'name': ['Alex', 'Alex', 'David', 'David', 'David', 'Mike', 'Mike'],
'sum': [10,10,30,25,10,20,30]}
intersted_in = {'name': ['David', 'Alex', 'David', 'Mike', 'Mike', 'Alex', 'Mike','Alex', 'John'],
'toy': ['Car', 'Soldier', 'Plush', 'Soldier', 'Spaceship', 'Pen', 'Plush', 'Card', 'Spaceship']}
p1 = pandas.DataFrame(borrowed_money)
p2 = pandas.DataFrame(intersted_in)
pandas.merge(p1,p2)
结果:
name sum toy
0 Alex 10 Soldier
1 Alex 10 Pen
2 Alex 10 Card
3 Alex 10 Soldier
4 Alex 10 Pen
5 Alex 10 Card
6 David 30 Car
7 David 30 Plush
8 David 25 Car
9 David 25 Plush
10 David 10 Car
11 David 10 Plush
12 Mike 20 Soldier
13 Mike 20 Spaceship
14 Mike 20 Plush
15 Mike 30 Soldier
16 Mike 30 Spaceship
17 Mike 30 Plush
期望的结果:
对我来说,想要的结果是两个数据集的组合,每个名称的使用次数有限。所以不会出现重复的匹配。
name sum toy
0 Alex 10 Soldier
1 Alex 10 Pen
2 David 30 Car
3 David 25 Plush
4 Mike 20 Soldier
5 Mike 30 Soldier
Alex 在第一个列表中被提及两次,因此它有两个匹配项 - Soldier 和 Pen。 David 在第二个列表中提到了两次,所以它有两个匹配项 - Car 和 Plush。
你能帮我用 pandas.merge 实现这个结果吗?
【问题讨论】:
-
问题是你合并重复,所以执行笛卡尔积。 Solution is described here. 通过添加一列增量来区分重复项,从而使键唯一化。
标签: python pandas dataframe merge