基于日期/时间排序Pandas Dataframe无效问题排查
问题描述
我从Access表格创建了一个DataFrame,其中Date列是object类型,格式示例为2019-12-31 12:55:00。我想按日期升序排序这个DataFrame,于是用以下代码将该列转为datetime类型:
df['Date'] = pd.to_datetime(df['Date'])
随后尝试用以下代码排序,但没有生效,DataFrame和排序前完全一致:
df.sort_values(by='Date')
以下是DataFrame的部分数据:
| Date | RefTT |
|---|---|
| 31/12/2019 12:55 | 10107355 |
| 31/12/2020 15:25 | 36643074 |
| 31/12/2020 14:15 | 36868924 |
| 08/01/2019 17:35 | 24763287 |
| 08/01/2019 19:45 | 10073929 |
| 08/01/2019 14:50 | 24132711 |
| 08/01/2019 18:40 | 24576111 |
| 08/01/2019 14:40 | 12255761 |
| 08/01/2019 13:30 | 18443380 |
| 31/12/2020 14:00 | 25106015 |
| 31/01/2019 15:10 | 19629874 |
| 31/01/2019 19:30 | 14505238 |
| 31/01/2020 15:40 | 11930839 |
| 31/01/2020 13:40 | 8753735 |
| 31/01/2020 14:45 | 23523591 |
| 31/01/2020 17:15 | 27388541 |
| 31/01/2021 15:10 | 28575475 |
| 28/02/2019 16:30 | 21470086 |
| 28/02/2019 16:55 | 18136828 |
| 28/02/2019 13:35 | 11896776 |
| 28/02/2019 13:50 | 14708670 |
| 28/02/2019 14:25 | 16095243 |
| 29/02/2020 15:00 | 26641007 |
| 29/02/2020 15:45 | 24342002 |
| 29/02/2020 13:37 | 1532111 |
| 29/02/2020 16:10 | 26684160 |
| 28/02/2021 16:40 | 6320524 |
| 28/02/2021 16:20 | 27632002 |
| 28/02/2021 15:10 | 21104540 |
| 31/03/2019 17:40 | 6896639 |
| 31/03/2021 15:10 | 38036656 |
| 31/03/2021 17:20 | 21281524 |
| 31/03/2021 15:00 | 24986895 |
| 31/03/2021 15:50 | 26600969 |
解决办法
1. 让排序修改原DataFrame
sort_values()默认返回新的DataFrame,不会改动原数据,你有两种方式解决:
- 把排序结果重新赋值给原变量:
df = df.sort_values(by='Date') - 或者添加
inplace=True参数直接修改原数据:df.sort_values(by='Date', inplace=True)
2. 确保日期格式正确转换
从样本数据看,Date列实际格式是DD/MM/YYYY HH:MM,和你最初描述的格式不一致,可能导致pd.to_datetime()解析错误(比如把日和月颠倒),进而影响排序。你可以指定格式参数来保证转换准确:
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y %H:%M')
如果不确定格式,也可以用dayfirst=True让解析器优先识别第一个数字为日期:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
3. 验证转换结果
转换后可以用以下代码确认Date列的类型和解析结果:
# 查看列类型 print(df.dtypes) # 查看前几行的日期解析结果 print(df['Date'].head())
确保Date列类型是datetime64[ns],且日期解析正确,避免因转换失败导致排序无效。
内容的提问来源于stack exchange,提问作者Robsmith
相关产品推荐
相关产品推荐

