pandas groupby 将列更改为系列

问题描述

df = sample.groupby('id')['user_id'].apply(list).reset_index(name='new') 这给了我:

    id       new
0   429     [659500]
1   1676    [2281394]
2   2389    [3973559]
3   2810    [4382598]
4   3104    [4733375]
5   3447    [5519461]
6   3818    [4453354]
7   3846    [4514870]
8   4283    [6378476]
9   4626    [6670089]
10  5022    [1116244]
11  5213    [6913646]
12  5899    [8213945,8210403]
13  5962    [8733646]

然而 new一个系列,如何将“new”放入数据框中的字符串列表

我试过 df['new_id'] = df.loc[:,['new']] 认为这至少可以解决我的系列问题...因为 print(type(df.loc[:,['new']])) 会重新调整数据帧。

解决方法

试试这个:

sample['new_id'] = sample['id'].map(sample.groupby('id')['user_id'].agg(list))