Pandas读取Excel日期列自动转为整数的原因及解决方法
问题原因与解决方法
问题原因
Excel里的日期本质是浮点数序列号:它以1899年12月30日为原点,每过一天数值加1(比如7/15/2022对应的44757就是从原点到这天的天数)。pandas的dtype参数仅用于指定读取时的原始数据类型,无法自动把这些序列号转换成datetime——设datetime64时,pandas不会识别这是Excel日期序列号;设string也只是把整数转成字符串,不是你要的MM/DD/YYYY格式。另外如果Excel单元格仅显示为日期,但实际存储的是数值,pandas会直接读取原始数值,不会遵循单元格的显示格式。
正确导入日期的方法
方法1:用parse_dates直接解析(最简便)
在read_excel里指定要解析的列,pandas会自动识别Excel日期序列号并转换成datetime类型:
import pandas as pd df = pd.read_excel('你的文件路径', parse_dates=['ORDER LINE CREATE DATE'])
方法2:读取后手动转换
如果方法1失效,可以先读取为整数,再用pd.to_datetime转换,指定Excel的日期原点:
import pandas as pd df = pd.read_excel('你的文件路径') # 把Excel日期序列号转成datetime df['ORDER LINE CREATE DATE'] = pd.to_datetime(df['ORDER LINE CREATE DATE'], unit='D', origin='1899-12-30')
方法3:用converters参数自定义转换
在读取时直接对指定列应用转换函数:
import pandas as pd def convert_excel_date(x): return pd.to_datetime(x, unit='D', origin='1899-12-30') df = pd.read_excel('你的文件路径', converters={'ORDER LINE CREATE DATE': convert_excel_date})
内容的提问来源于stack exchange,提问作者pranshu dhyani
相关产品推荐
相关产品推荐

