我正在尝试按扁平化数据分组,例如将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
答案 0 :(得分:1)
IIUC,尝试使用groupby
和agg
以及定义如何汇总列的字典:
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