如何在导出Pandas数据到CSV前按日期升序排序并保留指定格式
Pandas按日期排序并保留指定格式导出CSV
核心解决方案
先将日期列转为datetime类型实现正确排序,再转回原格式字符串后导出,就能同时满足排序逻辑和格式要求。
完整代码示例
import pandas as pd data_to_export = { "Company Name": ["Mcdonalds", "Burgerking"], "Delivery Address": ["123 lake rd", "124 west rd"], "Date": ["3/30/24", "1/23/24"], "Customer Name": ["Zack", "Peter"], } # 1. 转换DataFrame并将日期转为datetime类型(用于正确排序) df = pd.DataFrame(data_to_export) df["Date"] = pd.to_datetime(df["Date"], format="%m/%d/%y") # 2. 按日期升序排序(从早到晚) df.sort_values(by="Date", inplace=True) # 3. 将datetime转回原格式的字符串(月/日/年) # 若需要去掉前导零(如1/23/24而非01/23/24),用下方注释的代码替代本行 df["Date"] = df["Date"].dt.strftime("%m/%d/%y") # df["Date"] = df["Date"].dt.strftime("%m/%d/%y").apply(lambda x: '/'.join([part.lstrip('0') if part.lstrip('0') else '0' for part in x.split('/')])) # 4. 导出CSV df.to_csv("output.csv", index=False)
问题原因说明
- 直接用字符串排序:会按字典序排列(比如"10/1/24"会排在"2/1/24"前面,逻辑错误)
- 转datetime后直接导出:Pandas默认会将
datetime对象序列化为ISO格式(如2024-01-23),不符合"月/日/年"的格式要求
内容的提问来源于stack exchange,提问作者A Beautiful Trend
相关产品推荐
相关产品推荐

