使用groupby()。一次对多个列应用(列表)

2024-04-25 05:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个数据帧的多行合并成一行,并将具有不同值的列合并到一个列表中。有多个具有不同值的列

如果只需要将一列('b'在本例中)添加到列表中,df.groupby('a')['b'].apply(list)效果很好,但我不知道如何对多个列执行此操作

数据帧:

   a  b  c       d
0  1  b  1   first
1  1  b  2  second
2  2  c  1   third
3  2  c  2  fourth
4  2  c  3   fifth

首选数据帧后期操作:

   a  b          c                       d
0  1  b     [1, 2]         [first, second]
1  2  c  [1, 2, 3]  [third, fourth, fifth]

有没有一个简单的方法可以做到这一点


Tags: 数据方法df列表listfirstapplysecond
1条回答
网友
1楼 · 发布于 2024-04-25 05:37:57
df = df.groupby(['a','b']).apply(lambda x: [list(x['c']), list(x['d'])]).apply(pd.Series)
df.columns =['a','b','c','d']

输出

   a  b          c                       d
0  1  b     [1, 2]         [first, second]
1  2  c  [1, 2, 3]  [third, fourth, fifth]

相关问题 更多 >