重新排序时间戳

2024-06-01 07:04:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandascolumn,它包含无序的timestamps。当我对它们进行排序时,除了值H:MM:SS之外,它工作正常。你知道吗

d = ({
    'A' : ['8:00:00','9:00:00','10:00:00','20:00:00','24:00:00','26:20:00'],
    })

df = pd.DataFrame(data=d)

df = df.sort_values(by='A',ascending=True)

Out:
          A
2  10:00:00
3  20:00:00
4  24:00:00
5  26:20:00
0   8:00:00
1   9:00:00

理想情况下,我想在5个字母strings前加一个零。如果我把它们都转换成time delta,它把午夜之后的时间转换成1天加上n个小时。e、 g

df['A'] = pd.to_timedelta(df['A'])

                A
0 0 days 08:00:00
1 0 days 09:00:00
2 0 days 10:00:00
3 0 days 20:00:00
4 1 days 00:00:00
5 1 days 02:20:00

预期输出:

          A
0  08:00:00
1  09:00:00
2  10:00:00
3  20:00:00
4  24:00:00
5  26:20:00

Tags: dataframedfdataby排序sortdaysss
1条回答
网友
1楼 · 发布于 2024-06-01 07:04:11

如果只需要按列排序为timedelta,则可以将该列转换为timedelta,并在其上使用argsort来创建排序顺序以对数据帧进行排序:

df.iloc[pd.to_timedelta(df.A).argsort()]

#          A
#0   8:00:00
#1   9:00:00
#2  10:00:00
#3  20:00:00
#4  24:00:00
#5  26:20:00

相关问题 更多 >