pd.read_csv - 纪元日期转换

时间:2018-01-28 15:36:16

标签: python excel pandas

我的csv包含日期列,例如Bill Date,存储为日期的Excel序列号。因此12/15/2017在csv中表示为43084.我需要在我的DataFrame中将其转换为Pandas / Python识别的实际日期。所以,我的问题是:是否有比我用来转换日期更有效的方法?

df:
    Bill Date
0       43084

Excel将日期存储为自1900年1月1日以来的天数,而pandas默认为1970年1月1日。

diff = pd.Timestamp('1970-01-01') - pd.Timestamp('1900-01-01')
pd.to_datetime([43084 - (diff.days + 2)], unit='d')

DatetimeIndex(['2017-12-15'], dtype='datetime64[ns]', freq=None)

那么,我是否遗漏了一些明显的东西(例如,一个不同来源的选项)?

1 个答案:

答案 0 :(得分:1)

这样做:

 import pandas as pd
 from datetime import datetime

 df = pd.read_csv("yourdataframe.csv")
 df["Bill_Date"] = df["Bill_Date"].map(lambda x: datetime.fromordinal(datetime(1900, 1, 1).toordinal() + x - 2))
 df["Bill_Date"] = df["Bill_Date"].map(lambda x: x.strftime("%Y-%m-%d"))

 print df.head()