我试图通过一个扁平化的数据分组,如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
IIUC,试试 groupby
与 agg
和一个定义如何聚合列的字典。
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
这是实现你所期望的输出的一种方式。
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