我有这样的 Dataframe ,我想按列1和列2分组,并将列4和平均列5的聚集列表添加到列表中,谢谢。
Col1 Col2 Col3 Col4 Col5
0 A 09/09/2021 1 Blue 5
1 A 09/09/2021 2 Blue 2
2 A 09/09/2021 3 Red 1
3 A 09/03/2021 1 Red 1
4 B 09/05/2021 1 Yellow 7
5 B 09/05/2021 2 Red 2
6 B 09/05/2021 3 Yellow 2
7 C 09/01/2021 1 Red 2
8 C 09/01/2021 2 Red 2
9 C 09/03/2021 1 Red 4
10 C 09/03/2021 2 Red 10
11 C 09/03/2021 3 Blue 2
我想看两个 Dataframe
已尝试:df.groupby(['Col1', 'Col2'],as_index=False).agg({'Col4':(lambda x: list(x.unique()))})
,但无法连接平均Col5
版本1
Col1 Col2 Col3 Col4 Col5
0 A 09/09/2021 1,2,3 Blue,Red 3.5,1
1 A 09/03/2021 1 Red 1
2 B 09/05/2021 1,2 Yellow,Red 4.5,2
3 C 09/01/2021 1,2 Red 2
4 C 09/03/2021 1,3 Red,Blue 7,2
版本2
因此,从版本1开始,我希望看到聚合列表在每个记录的单独列上,而在版本2中没有Col3,因此
0 A 09/09/2021 1,2,3 Blue,Red 3.5,1
变成
0 A 09/09/2021 Blue, 3.5, Red ,1
并且如果记录具有许多聚集列表
Blue, Red, Yellow, Black 2, 3, 23, 3
则将添加额外的8个字段以变为
Blue, 2, Red, 3, Yellow, 23, Black , 3
版本2的预期输出如下所示
Col1 Col2 Col4 Col5 Col6 Col7
0 A 09/09/2021 Blue 3.5 Red 1
1 A 09/03/2021 Red 1
2 B 09/05/2021 Yellow 4.5 Red 2
3 C 09/01/2021 Red 2
4 C 09/03/2021 Red 7 Blue 2
1条答案
按热度按时间yyhrrdl81#
您需要两个
groupby
:输出:
版本2:
输出: