我有一个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
答案 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