条件合并/获取重复行

时间:2014-05-05 11:38:46

标签: python pandas

我的初始数据看起来像是

>>> left
        id      a
0  3397088   1968
1  3420060   1969
2  3420089   1969

>>> right
       lid   foo  amin  amax
0  3397088     1  1968   2000
1  3420060     2  1969   2000
2  3420089     1  1969   2000

我想要做的是合并排序

result = pd.merge(left, right, how=inner, left_index="id", right_index="lid")

但是,左行有时会有多个右行。但是,总有一个也满足(right.amin <= left.a) & (right.amax >= left.a)。所以,最好的方法是以某种方式将它放入合并中。我没有设法,所以我的第二种方法是首先进行how=right合并,抓住所有行然后按组进行:

由于效果似乎较差,我更愿意使用result.set_index('id').index.get_duplicates()而不是result.groupby('id').filter(lambda x: len(x) > 1)找到重复项。但是,这给我留下了重复(和浮点)索引的列表:

Out[48]: 
[3419915.0,
 3419947.0,
(...)
 6009542.0]

那么,为了获得重复的行,我想到了

duplicates = pd.DataFrame(right.set_index(['lid']).index.get_duplicates(), columns={'id'})
right.set_index(['PATENT'], inplace=True)
rows = right.ix[duplicates['id']]

但现在我陷入困境:下一步做什么是聪明的方式? - 还是有一个更整洁的方法?

0 个答案:

没有答案