Python:按多列Pandas分组

问题描述 投票:0回答:2

我试图通过一个扁平化的数据分组,如2列组为list &第三个应该是该列的行数之和。

假设数据框架看起来像

ColA      ColB     ColC     ColD
A         Hi       Hello     2
A         There    You       4
B         Okay     Tap       4
B         Bye      Here      6

我希望输出的数据框是这样的。

ColA     ColB        ColC          ColD
A       [Hi,There]   [Hello,You]    6
B       [Okay,Bye]   [Tap,Here]     10
python pandas dataframe pandas-groupby
2个回答
1
投票

IIUC,试试 groupbyagg 和一个定义如何聚合列的字典。

df.groupby('ColA').agg({'ColB':list, 'ColC':list, 'ColD':'sum'})

Output:

             ColB          ColC  ColD
ColA                                 
A     [Hi, There]  [Hello, You]     6
B     [Okay, Bye]   [Tap, Here]    10

0
投票

这是实现你所期望的输出的一种方式。

df1 = df.groupby(['ColA'])['ColB','ColC'].agg(lambda x: list(x))
df1['ColD'] = df.groupby('ColA')['ColD'].sum()
df1 = df1.reset_index()

输出:

ColA    ColB         ColC           ColD
A       [Hi, There]  [Hello, You]   6
B       [Okay, Bye]  [Tap, Here]    10
© www.soinside.com 2019 - 2024. All rights reserved.