【发布时间】:2018-01-10 07:21:24
【问题描述】:
我正在尝试根据两者中存在的列合并两个数据框,只保留两组的交集。
想要的结果是:
foo bar foobar
x y z x j i x y z j i
a 1 2 a 9 0 a 1 2 9 0
b 3 4 b 9 0 b 3 4 9 0
c 5 6 c 9 0 c 5 6 9 0
d 7 8 e 9 0
f 9 0
我没有产生预期结果的代码是:
pd.merge(foo, bar, how='inner', on='x')
相反,代码似乎返回:
foo bar foobar
x y z x j i x y z j i
a 1 2 a 9 0 a 1 2 9 0
b 3 4 b 9 0 b 3 4 9 0
c 5 6 c 9 0 c 5 6 9 0
d 7 8 e 9 0 e * * 9 0
f 9 0 f * * 9 0
(其中 * 表示 NaN)
我哪里错了?我已经到达第三个谷歌页面,试图解决这个问题,但没有任何效果。无论我做什么,我都会得到一个外连接,两个集合中的所有行。
【问题讨论】:
-
你的代码给出了什么结果?
-
@MaxU 我不明白的是这段代码确实给出了正确的结果。
-
@MaxU 尽管它们代表相同的东西,但它们略有不同 - 一个是非空 int64,而另一个是 int64。会不会是这个问题?
-
@cᴏʟᴅsᴘᴇᴇᴅ,我认为这是因为
x列中的重复 -
@MaxU 你的意思是在 OP 的实际数据中?
标签: python pandas merge inner-join