重新排序时间戳记的熊猫

时间:2018-08-03 03:49:26

标签: python pandas time

我有一个pandas column,其中包含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个小时。例如

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

1 个答案:

答案 0 :(得分:0)

如果您只需要按列作为 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