【问题标题】:How to convert to Pandas datetime to date to integer in pandas?如何将 Pandas 日期时间转换为 Pandas 中的整数?
【发布时间】:2018-09-27 11:50:23
【问题描述】:
如何将pandas 转换为如下所示的日期格式:
2018-08-27 00:00:00.000
2018-08-26 00:00:00.000
2018-08-24 00:00:00.000
2018-08-24 00:00:00.000
2018-08-24 00:00:00.000
2018-08-24 00:00:00.000
2018-08-23 00:00:00.000
2018-08-23 00:00:00.000
2018-08-20 00:00:00.000
2018-08-20 00:00:00.000
以整数格式计算自 2010 年 1 月 1 日以来的天数?
【问题讨论】:
标签:
pandas
datetime
dataframe
integer
days
【解决方案1】:
Series.sub 从列中减去日期,Series.dt.days 将 timedeltas 转换为天数:
df['days'] = pd.to_datetime(df['date']).sub(pd.Timestamp('2010-01-01')).dt.days
print (df)
date days
0 2018-08-27 00:00:00.000 3160
1 2018-08-26 00:00:00.000 3159
2 2018-08-24 00:00:00.000 3157
3 2018-08-24 00:00:00.000 3157
4 2018-08-24 00:00:00.000 3157
5 2018-08-24 00:00:00.000 3157
6 2018-08-23 00:00:00.000 3156
7 2018-08-23 00:00:00.000 3156
8 2018-08-20 00:00:00.000 3153
9 2018-08-20 00:00:00.000 3153
【解决方案2】:
您可以像 jezrael 在他非常直接的回答中提到的那样在 pandas Timestamp 列上简单地应用 sub 。
如果你想一个接一个地做同样的事情,你可以在地图的帮助下这样做
base_date = pd.Timestamp('2010-01-01 00:00:00')
df['days'] = df['date'].map(lambda date : (pd.Timestamp(date) - base_date).days )