如何用Python处理Excel提取列并按订单日期倒序生成CSV文件
实现方案
原代码存在的问题
- pandas的
sort_values()方法默认返回新的DataFrame对象,原代码调用后未赋值回原变量,也未设置inplace=True,排序结果没有实际生效 - 没有添加
ascending=False参数,默认是升序排列,无法实现最新日期在顶部的需求 - 排序操作放在了
Order Date列的日期类型转换之前,字符串格式的日期排序会出现逻辑错误 - 排序操作写在了导出CSV的
to_csv()方法之后,输出的文件仍然是未排序的内容
修复后可直接运行的代码
import pandas as pd import openpyxl # 读取Excel文件,直接提取需要的两列,省略中间导出全量CSV的冗余步骤 col_list = ['Order Date', 'Sales'] df = pd.read_excel("Orders-With Nulls.xlsx", usecols=col_list) # 先将Order Date转换为日期类型,保证排序逻辑正确 df['Order Date'] = pd.to_datetime(df['Order Date']) # 按Order Date降序排序,最新日期在顶部 df = df.sort_values(by="Order Date", ascending=False) # 打印验证结果 print(df) max_date = df['Order Date'].max() print(max_date) # 导出排序后的结果到CSV df.to_csv("new.csv", sep=',', index=False)
改动说明
- 去掉了冗余的中间全量CSV导出/读取步骤,直接从Excel中提取目标字段,减少不必要的IO操作
- 调整执行顺序:先做日期类型转换,再执行排序,避免字符串排序的逻辑错误
- 排序时指定降序参数,并且将排序结果赋值回df,确保排序生效
- 调整导出CSV的位置,在排序完成后再执行导出,保证输出文件符合要求
内容的提问来源于stack exchange,提问作者Manav Prajapati
相关产品推荐
相关产品推荐

