我有带有日期列的csv,例如Bill Date
,存储为日期的Excel序列号。因此,12/15/2017 在 csv 中表示为 43084。我需要在我的数据帧中将其转换为Pandas/Python识别的实际日期。所以,我的问题:有没有比我用来转换日期更有效的方法?
df:
Bill Date
0 43084
Excel 将日期存储为自 1900 年 1 月 1 日以来的日期,熊猫默认为 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)
那么,我在这里是否遗漏了一些明显的东西(例如,不同来源的选项(?
只需这样做:
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()