我有一个 Pandas 数据帧,其中包含 2000+ 行,日期为浮点格式,如下所示:
42704.99686342593
表示日期时间值的(2016, 11, 30, 23, 55, 29)
我想做的是迭代数据帧中的每一行,并将浮点数转换为正确的日期时间格式,理想情况下d/m/Y H/M/S
并将其保存到新的数据帧。
使用 Python 2.7。
我找不到任何重复的问题,也无法用类似问题的解决方案解决问题,所以任何帮助都非常感谢。
谢谢。
您似乎使用serial date
Excel
格式。
最简单的是减去25569
并将to_datetime
与参数unit='d'
一起使用:
df = pd.DataFrame({'date':[42704.99686342593,42704.99686342593]})
print (df)
date
0 42704.996863
1 42704.996863
print (pd.to_datetime(df.date - 25569, unit='d'))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
另一种解决方案是减去timedelta
或offset
:
print (pd.to_datetime(df.date, unit='d') - pd.to_timedelta('25569 Days'))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
print (pd.to_datetime(df.date, unit='d') - pd.offsets.Day(25569))
0 2016-11-30 23:55:28.963200
1 2016-11-30 23:55:28.963200
Name: date, dtype: datetime64[ns]
谢谢泰德·佩特鲁的链接。