gpt4 book ai didi

python - 在不更改组顺序的情况下按第一个值对组进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:14 25 4
gpt4 key购买 nike

我试图在不更改 block 内顺序的情况下按 block 对 pandas 数据帧进行排序。

数据框包含论坛帖子、时间戳和话题名称。我已经使用 df.sort_values(['thread', 'timestamp'], inplace=True) 对数据框进行了排序,以便属于同一线程的所有帖子都按正确的顺序排列。我现在想根据每个 block 中第一篇文章的时间戳对属于同一线程的数据 block 进行排序。 block 内的顺序应保持不变。

我目前拥有的:

    post   timestamp         thread
0 this 2009/10/30 16:51 hello
1 be 2009/11/02 17:11 hello
2 some 2008/07/10 15:23 nice
3 text 2007/04/22 14:11 question
4 this 2007/04/24 11:03 question
5 be 2007/05/03 17:55 question
6 some 2004/09/01 09:32 game
7 text 2010/01/01 03:32 wheather

我想要的:

    post   timestamp         thread
6 some 2004/09/01 09:32 game
3 text 2007/04/22 14:11 question
4 this 2007/04/24 11:03 question
5 be 2007/05/03 17:55 question
2 some 2008/07/10 15:23 nice
0 this 2009/10/30 16:51 hello
1 be 2009/11/02 17:11 hello
7 text 2010/01/01 03:32 wheather

有办法吗?

最佳答案

让我们先尝试groupby线程,然后获取第一条记录,将这些记录按时间排序,然后使用DataFrameGroupBy的groups属性获取索引的当前顺序每组。最后,使用 pd.concat 和列表推导式按照第一条记录的排序顺序重建数据框。

g = df.groupby('thread')
s = g.head(1).sort_values('timestamp')['thread']
dg = g.groups

pd.concat([df.reindex(dg[i[1]]) for i in s.iteritems()])

输出:

   post           timestamp    thread
6 some 2004-09-01 09:32:00 game
3 text 2007-04-22 14:11:00 question
4 this 2007-04-24 11:03:00 question
5 be 2007-05-03 17:55:00 question
2 some 2008-07-10 15:23:00 nice
0 this 2009-10-30 16:51:00 hello
1 be 2009-11-02 17:11:00 hello
7 text 2010-01-01 03:32:00 wheather

关于python - 在不更改组顺序的情况下按第一个值对组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54156020/

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