Python 熊猫:如何仅选择列中具有相同键但不同值的重复行

Python 熊猫:如何仅选择列中具有相同键但不同值的重复行,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个带有列['join key',code','a','B','C','D']的数据框 join键是一个长字符串,而code可以等于521、539或一组其他数字 可以有具有相同的连接键的行 我希望能够按join keymy记录进行分组,并且只将出现在我的数据帧中的所有重复记录的code字段设置为521和539 我不希望这些记录可能具有相同的键和code=521但没有code=539对应项 import pandas as pd exp_csv = pd.DataFrame([[3566190

我有一个带有列
['join key',code','a','B','C','D']
的数据框

join键
是一个长字符串,而
code
可以等于521、539或一组其他数字

可以有具有相同的
连接键的行

我希望能够按
join key
my记录进行分组,并且只将出现在我的数据帧中的所有重复记录的
code
字段设置为521和539

我不希望这些记录可能具有相同的键和
code=521
但没有
code=539
对应项

import pandas as pd
exp_csv = pd.DataFrame([[3566190983, 521, 1, 2, 3, 4], \
                        [3566190983, 539, 1, 2, 3, 4], \
                        [3509730366, 521, 1, 2, 3, 4], \
                        [3509730366, 521, 1, 2, 3, 4], \
                        [3509730366, 521, 1, 2, 3, 4], \
                        [9809730686, 500, 1, 2, 3, 4]],\
                        columns=['join key', 'code', 'A', 'B', 'C', 'D'])

interim = exp_csv[exp_csv.duplicated(['join key'], keep=False)]
interim = interim.loc[(interim['code'] == 521) | (interim['code'] == 539)]
interim = interim.groupby(by='join key').apply(lambda x: compute(x))
一旦我有了所有的重复项,我想应用一个函数,
compute(x)
,它将把这对重复项合并成一行,由
code=521的行中的
['a','B']
列和
code=539的行中的
['C','D']
列组成

我似乎无法选择正确的行。我一直在选择那些在
join key
上重复的行,但它们都是相同的代码,没有对应的行

import pandas as pd
exp_csv = pd.DataFrame([[3566190983, 521, 1, 2, 3, 4], \
                        [3566190983, 539, 1, 2, 3, 4], \
                        [3509730366, 521, 1, 2, 3, 4], \
                        [3509730366, 521, 1, 2, 3, 4], \
                        [3509730366, 521, 1, 2, 3, 4], \
                        [9809730686, 500, 1, 2, 3, 4]],\
                        columns=['join key', 'code', 'A', 'B', 'C', 'D'])

interim = exp_csv[exp_csv.duplicated(['join key'], keep=False)]
interim = interim.loc[(interim['code'] == 521) | (interim['code'] == 539)]
interim = interim.groupby(by='join key').apply(lambda x: compute(x))

我相信您需要比较
set
s并通过以下方式进行筛选:


欢迎来到StackOverflow。请花点时间阅读这篇文章,以及如何提供答案,并相应地修改你的问题。这些提示可能也很有用。谢谢你,这确实有用!但是我怎样才能把这两行加起来呢?也许我可以再次按键分组,并在每对上应用一个函数?有没有一种方法可以像我在OP中解释的那样组合两行?我想要一个新行,其中一行只有列
['join key',code',a',B']
,另一行只有列
['C',D']
。我曾考虑将一些列设置为
nan
,然后将两行相加,但我似乎做不到。