Python:按多列熊猫分组

时间:2020-05-28 19:17:27

标签: python pandas dataframe pandas-groupby

我正在尝试按扁平化数据分组,例如将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

2 个答案:

答案 0 :(得分:1)

IIUC,尝试使用groupbyagg以及定义如何汇总列的字典:

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

输出:

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

答案 1 :(得分: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