如何用Pandas直接处理显示为DD/MM但含完整日期的CSV文件?
用Pandas处理显示为DD/MM的日期列(实际含年份)
完全可以用Pandas直接处理,无需转成XLSX格式,以下分两种常见场景给出解决方案:
场景1:CSV中的日期是Excel日期序列号(显示为DD/MM)
如果你的CSV是从Excel导出的,日期列实际存储的是Excel日期数值(比如45387对应2024/03/28),只是Excel将其格式化为DD/MM显示,可直接解析为完整日期:
import pandas as pd # 读取CSV,注意分隔符是分号(匹配你的示例数据) df = pd.read_csv('your_file.csv', sep=';') # 将第一列转换为datetime,使用Excel的1900日期基准 df.iloc[:, 0] = pd.to_datetime(df.iloc[:, 0], unit='D', origin='1899-12-30') # 可选:将日期格式化为DD/MM/YYYY的字符串形式 df.iloc[:, 0] = df.iloc[:, 0].dt.strftime('%d/%m/%Y')
场景2:CSV中的日期是DD/MM字符串,需补充已知年份
如果CSV里的日期确实是DD/MM字符串,但你清楚每个日期对应的年份(可从文件元数据、其他列或上下文获取),可以拼接年份后转换为完整日期:
import pandas as pd df = pd.read_csv('your_file.csv', sep=';') # 拼接年份(这里以2024为例,若年份不固定可根据逻辑动态赋值) df.iloc[:, 0] = pd.to_datetime(df.iloc[:, 0] + '/2024', format='%d/%m/%Y') # 可选:格式化为需要的字符串形式 df.iloc[:, 0] = df.iloc[:, 0].dt.strftime('%d/%m/%Y')
验证步骤
读取后可先查看原始数据,确认日期列的实际类型:
print(df.iloc[:, 0].head())
如果输出是数值,说明是Excel日期序列号,用场景1处理;如果是DD/MM字符串,用场景2补充年份即可。
内容的提问来源于stack exchange,提问作者ChangeMyName
相关产品推荐
相关产品推荐

