gpt4 book ai didi

python pandas groupby排序和连接

转载 作者:行者123 更新时间:2023-12-01 23:41:13 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框:

df = pd.DataFrame({'a': [1,1,1,1,2,2,2], 'b': ['a','a','a','a','b','b','b'], 'c': ['o','o','o','o','p','p','p'], 'd': [ [2,3,4], [1,3,3,4], [3,3,1,2], [4,1,2], [8,2,1], [0,9,1,2,3], [4,3,1] ], 'e': [13,12,5,10,3,2,5] })

我想要的是:

首先按列 a、b、c 分组 --- 有两组

然后在每组内按照 e 列升序排序

最后在每个组列 d 内连接

所以我想要的结果是:
result = pd.DataFrame({'a':[1,2], 'b':['a','b'], 'c':['o','p'], 'd':[[3,3,1,2,4,1,2,1,3,3,4,2,3,4],[0,9,1,2,3,8,2,1,4,3,1]]})

谁能分享一些快速/优雅的方法来解决这个问题?非常感谢。

最佳答案

您可以按列排序 e , group by a , bc然后使用列表推导式连接 d列(展平)。请注意,我们可以使用 sort然后 groupby因为 groupby 会

preserve the order in which observations are sorted within each group:



根据 doc here:
(df.sort_values('e').groupby(['a', 'b', 'c'])['d']
.apply(lambda g: [j for i in g for j in i]).reset_index())

enter image description here

列表理解的替代方法是来自 itertools 的链:
from itertools import chain
(df.sort_values('e').groupby(['a', 'b', 'c'])['d']
.apply(lambda g: list(chain.from_iterable(g))).reset_index())

关于python pandas groupby排序和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39760063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com