我有一个包含多列的数据框,并想将这些列之一转换为浮点日期(excel日期格式-DDDDD.ttt)到datetime。
当前列的值如下:
42411.0
42754.0
所以我想将它们转换为:
2016-02-11
2017-01-19
答案 0 :(得分:1)
给出
# s = df['date']
s
0 42411.0
1 42754.0
Name: 0, dtype: float64
使用以下方法将Excel转换为日期时间:
s_int = s.astype(int)
# Correcting Excel Leap Year bug.
days = pd.to_timedelta(np.where(s_int > 59, s_int - 1, s_int), unit='D')
secs = pd.to_timedelta(
((s - s_int) * 86400.0).round().astype(int), unit='s')
pd.to_datetime('1899/12/31') + days + secs
0 2016-02-11
1 2017-01-19
dtype: datetime64[ns]