我看到过一些类似我的重复问题,但没有一个答案对我有帮助。 我在按日期时间排序此数据框时遇到问题(“日期”列格式为 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 |
有谁知道为什么我的排序不起作用?也许是因为日期时间转换?我什至无法检测到用于对数据框进行排序的模式熊猫。 此数据框中的数据更多,如有必要,我很乐意在我的帖子中编辑更多数据。
答案 0 :(得分:0)
必须将小时转换为时间,而不是日期。
pd.to_datetime (df ['Hour'])