按日期和时间对 Pandas 数据框进行排序

时间:2020-12-28 18:48:03

标签: python pandas dataframe sorting datetime

我看到过一些类似我的重复问题,但没有一个答案对我有帮助。 我在按日期时间排序此数据框时遇到问题(“日期”列格式为 yyyymmdd):

<头>
代码 日期 小时
4 20100301 15:01:04
3 20100202 09:15:59
2 20090401 15:25:27
1 20100202 09:14:16

这来自客户的数据库,我知道它目前不是存储数据的最佳方式,但我对此无能为力,因此我使用以下代码来“修复”它:

df['Date'] = df['Date'].astype(str)
df['Hour']= df['Date'].str[6:8]  + '/' + df['Date'].str[4:6] + '/' + df['Date'].str[0:4] + ' ' + df['Hour']
pd.to_datetime(df['Date'])

所以数据框看起来像这样(我知道最好在使用后删除“日期”表,但我有充分的理由不这样做):

<头>
代码 日期 小时
4 20100301 01/03/2010 15:01:04
3 20100202 02/02/2010 09:15:59
2 20090401 01/04/2009 15:25:27
1 20100202 02/02/2010 09:14:16

我尝试了以下代码(单独)对其进行排序,但似乎都不起作用:

df = df.sort_values(['Hour'], ascending=True)
df = df.sort_values(by =['Hour'], ascending=True)
df = df.sort_values(['Hour'])
df.sort_values('Hour', inplace=True)

但所有这些都将我的 df 排序为:

<头>
代码 日期 小时
4 20100301 01/03/2010 15:01:04
2 20090401 01/04/2009 15:25:27
1 20100202 02/02/2010 09:14:16
3 20100202 02/02/2010 09:15:59

有谁知道为什么我的排序不起作用?也许是因为日期时间转换?我什至无法检测到用于对数据框进行排序的模式熊猫。 此数据框中的数据更多,如有必要,我很乐意在我的帖子中编辑更多数据。

1 个答案:

答案 0 :(得分:0)

必须将小时转换为时间,而不是日期。

pd.to_datetime (df ['Hour'])