Pandas 读取 Excel数字形式的日期,如何转换成pandas的时间戳?
问题描述:
问题:pandas读取Excel文件,日期成了数字,需要转换成pandas的时间戳。
解决方案,做了一个自定义函数来转换,如下:
def date_tran(date_n): # Excel数字日期转 pandas 的 datetime if type(date_n) == int: delta_d = pd.Timedelta(str(int(date_n)) + 'days') date_d = pd.to_datetime('1899-12-30') + delta_d return date_d elif type(date_n) == float: delta_df = pd.Timedelta(str(float(date_n)) + 'days') date_dt = pd.to_datetime('1899-12-30 00:00:00') + delta_df return date_dt else: return date_n df['日期'] = df['日期'].apply(date_tran)
关于在自定义函数里头,初始时间设定为1899-12-30的原因,和Excel的一个bug有关。
在Excel中,数字0,对应的是1900年1月0日,这是一个无效的日期,数字60对应的是1900年2月29日,而实际上,1900年不是闰年,没有2月29日,也是无效的日期。
在pandas中,将初始时间设置成1899-12-30,Excel的日期在1900年3月1日开始,才没有问题。
答
不错不错, 采纳了去发篇博文吧。