我的Pandas数据框中有一个(已解析的)datetime列。我现在需要根据这一列生成多个列,一个列有年份,一个列有月份,小时,星期几等。我目前正在做一些个人申请,但它是一个大型数据集,我多次迭代df。有没有更好的模式来实现这一目标?应用程序可以返回一个数据帧然后粘贴在它后面吗?
答案 0 :(得分:3)
如果dtype
已经datetime
,那么您可以使用向量化日期时间访问者dt
添加列:
In [11]:
df = pd.DataFrame({'date':pd.date_range(dt.datetime(2016,1,1), end = dt.datetime(2016,1,10))})
df
Out[11]:
date
0 2016-01-01
1 2016-01-02
2 2016-01-03
3 2016-01-04
4 2016-01-05
5 2016-01-06
6 2016-01-07
7 2016-01-08
8 2016-01-09
9 2016-01-10
In [13]:
df['year'],df['month'],df['day'], df['day_of_week'] = df['date'].dt.year, df['date'].dt.month, df['date'].dt.day, df['date'].dt.dayofweek
df
Out[13]:
date year month day day_of_week
0 2016-01-01 2016 1 1 4
1 2016-01-02 2016 1 2 5
2 2016-01-03 2016 1 3 6
3 2016-01-04 2016 1 4 0
4 2016-01-05 2016 1 5 1
5 2016-01-06 2016 1 6 2
6 2016-01-07 2016 1 7 3
7 2016-01-08 2016 1 8 4
8 2016-01-09 2016 1 9 5
9 2016-01-10 2016 1 10 6