Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧中的分组和关联值_Python_Pandas - Fatal编程技术网

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