datetime.dt.day以及to_datetime函数讲解(Python时序量汇总)

之前在别的博客记过pandas处理时间量的笔记,但是时间一长又忘了。。。所以决定另外写一篇记录下时序量的处理。

1.关于pandas的to_datetime函数的理解。

参考:https://blog.csdn.net/qq_36523839/article/details/79746977

df = pd.read_csv('../input/train.csv',parse_dates=["purchase_date"])

等价于:

df['purchase_date'] = pd.to_datetime(df['purchase_date'])

上面就是一个to_datetime函数的典型应用。下面说一些细节:
1.

1/17/07 has the format “%m/%d/%y”
17-1-2007 has the format “%d-%m-%Y”

2.原始时间数据是object类型的,这个object格式一般是python用来记录可变化的兑现的格式。这个格式它并不能认出是时间格式,尽管我们一眼就能看出(人和机器的区别在此)。
to_datetime之后就可以用神奇的pandas.Series.dt.day或者pandas.Series.dt.month等方法获取到真实数据了!
3.如果原始数据有的是1/17/07有的是17-1-2007的呢?
那么直接用上面的语句会报错的。应用:

data['date_parsed'] = pd.to_datetime(data['Date'],infer_datetime_format=True)

另外一种改错方式见上面链接。

2.关于datetime.dt.year等类型的理解

    df['purchase_date'] = pd.to_datetime(df['purchase_date'])
    df['year'] = df['purchase_date'].dt.year
    df['weekofyear'] = df['purchase_date'].dt.weekofyear
    df['month'] = df['purchase_date'].dt.month
    df['dayofweek'] = df['purchase_date'].dt.dayofweek
    df['weekend'] = (df.purchase_date.dt.weekday >=5).astype(int)
    df['hour'] = df['purchase_date'].dt.hour
df['purchase_date'] = pd.to_datetime(df['purchase_date'])

这一句完成了数据类型从object到datetime64的变化。之后
.dt.day等可参考官网:
在这里插入图片描述
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.day.html#pandas-series-dt-day

3。关于时序量的做差等

train['elapsed_time'] = (datetime.date(2018, 2, 1) - train['first_active_month'].dt.date).dt.days

或者

df_hist_trans_group['new_hist_purchase_date_diff'] = 
(df_hist_trans_group['new_hist_purchase_date_max'] - 
df_hist_trans_group['new_hist_purchase_date_min']).dt.days

其实上面两种是一样的。
在这里插入图片描述
说明:

import pandas as pd
a  = pd.Series(['2017-1-2','2017-9-1'])

在这里插入图片描述
在这里插入图片描述
一切尽在不言中~~我想从上面的截图你应该明白怎么回事了~

  • 20
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值