Python 数据帧中的分组和关联值
我在这个网站上找到了我问题的答案,但是提供的答案不适合我,所以我提出了不同的要求。我将使用相同的数据并显示我得到的结果 因此,基本上,我有一个数据帧,其中一列有重复的值,我想将这些值分组到一行中,并且我想将另一列的值作为组合行的值连接起来 下面是一个例子:Python 数据帧中的分组和关联值,python,pandas,Python,Pandas,我在这个网站上找到了我问题的答案,但是提供的答案不适合我,所以我提出了不同的要求。我将使用相同的数据并显示我得到的结果 因此,基本上,我有一个数据帧,其中一列有重复的值,我想将这些值分组到一行中,并且我想将另一列的值作为组合行的值连接起来 下面是一个例子: data = np.array([['John', 'Smith', 1], ['John', 'Smith', 7], ['Eric', 'Adams', 9], ['Jane', 'Doe', 14], ['Jane', 'Doe', 1
data = np.array([['John', 'Smith', 1], ['John', 'Smith', 7], ['Eric', 'Adams', 9], ['Jane', 'Doe', 14], ['Jane', 'Doe', 16], ['John', 'Smith', 19]])
df = pd.DataFrame(data, columns=['FIRST_NM', 'LAST_NM', 'PAGE_NUM'])
产出如预期:
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1
1 John Smith 7
2 Eric Adams 9
3 Jane Doe 14
4 Jane Doe 16
5 John Smith 19
这是我在对FIRST\u NM
和LAST\u NM
的值进行分组并将PAGE\u NUM
的值串联在一起后想要得到的:
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1,7,19
1 Eric Adams 9
2 Jane Doe 14,16
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1,7,19
1 Eric Adams 9
2 Jane Doe 14,16
建议的解决方案对我来说很有意义,就是使用以下方法:
df.groupby(['FIRST_NM', 'LAST_NM']).apply(lambda group: ','.join(group['PAGE_NUM']))
然而,不幸的是,这似乎没有任何效果,我得到了完全相同的结果:
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1
1 John Smith 7
2 Eric Adams 9
3 Jane Doe 14
4 Jane Doe 16
5 John Smith 19
谁能帮我指出我做错了什么
非常感谢
JF通过groupby()
和agg()
尝试:
如果需要唯一值,则使用:
out=df.groupby(['FIRST_NM','LAST_NM'],sort=False,as_index=False).agg({'PAGE_NUM':set})
out['PAGE_NUM']=out['PAGE_NUM'].astype(str).str[1:-1].str.replace("'",'')
输出的输出
:
FIRST_NM LAST_NM PAGE_NUM
0 John Smith 1,7,19
1 Eric Adams 9
2 Jane Doe 14,16