如何按日历顺序对Pandas数据集的Date列进行排序?
按日历顺序对Pandas日期列排序的解决方法
你的问题根源在于Date列当前是字符串类型,直接调用sort_values会按字母顺序排序,而非日历时间顺序。解决思路是先将字符串格式的日期转换为Pandas可识别的datetime类型,再执行排序操作。
具体步骤:
- 将
Date列转换为datetime格式
使用pd.to_datetime()函数,Pandas可以自动识别你提供的日期字符串格式:df['Date'] = pd.to_datetime(df['Date']) - 按转换后的日期列排序
此时再调用sort_values,就会按照日历时间顺序(更早的日期在前)排序:df_sorted = df.sort_values(by='Date')
完整代码示例:
import pandas as pd from io import StringIO data=""" Date| Link April 1, 2009, 12:00 PM| 4 March 27, 2009, 12:00 PM| 8 April 29, 2009, 12:00 PM| 15 May 12, 2009, 12:00 PM| 9 June 9, 2009, 12:00 PM| 11 July 3, 2009, 12:00 PM| 329 June 16, 2009, 12:00 PM| 12 September 26, 2009, 12:00 PM| 48 October 4, 2009, 12:00 PM| 49 August 15, 2009, 12:00 PM| 10 November 30, 2009, 12:00 PM| 29 December 23, 2009, 12:00 PM| 68 April 1, 2009, 12:00 PM| 4 May 12, 2010, 12:00 PM| 9 September 26, 2012, 12:00 PM| 48 """ df = pd.read_csv(StringIO(data), delimiter='|') # 转换日期列类型 df['Date'] = pd.to_datetime(df['Date']) # 按日历顺序排序 df_sorted = df.sort_values(by='Date') # 查看排序结果 print(df_sorted)
补充说明:
如果你的日期格式比较特殊,pd.to_datetime无法自动识别,可以通过format参数手动指定格式,针对你的日期格式可写成:
df['Date'] = pd.to_datetime(df['Date'], format='%B %d, %Y, %I:%M %p')
这种方式能确保日期转换的准确性,避免自动识别出错。
内容的提问来源于stack exchange,提问作者backlog
相关产品推荐
相关产品推荐

