使用熊猫将Excel日期格式(DDDDD.tttt)的列转换为datetime

时间:2018-12-26 11:37:19

标签: python pandas datetime dataframe

我有一个包含多列的数据框,并想将这些列之一转换为浮点日期(excel日期格式-DDDDD.ttt)到datetime。

当前列的值如下:

42411.0
42754.0

所以我想将它们转换为:

2016-02-11
2017-01-19

1 个答案:

答案 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]

Reference.