Python & Pandas: Combine columns into a date

依然范特西╮ 提交于 2021-02-18 10:25:11

问题


In my dataframe, the time is separated in 3 columns: year, month, day, like this:

How can I convert them into date, so I can do time series analysis?

I can do this:

df.apply(lambda x:'%s %s %s' % (x['year'],x['month'], x['day']),axis=1)

which gives:

1095       1954 1 1
1096       1954 1 2
1097       1954 1 3
1098       1954 1 4
1099       1954 1 5
1100       1954 1 6
1101       1954 1 7
1102       1954 1 8
1103       1954 1 9
1104      1954 1 10
1105      1954 1 11
1106      1954 1 12
1107      1954 1 13

But what follows?

EDIT: This is what I end up with:

from datetime import datetime
df['date']= df.apply(lambda x:datetime.strptime("{0} {1} {2}".format(x['year'],x['month'], x['day']), "%Y %m %d"),axis=1)
df.index= df['date']

回答1:


Here's how to convert value to time:

import datetime


df.apply(lambda x:datetime.strptime("{0} {1} {2} 00:00:00".format(x['year'],x['month'], x['day']), "%Y %m %d %H:%M:%S"),axis=1)



回答2:


It makes no sense to format a date to a string and immediately reparse it; use the datetime constructor instead:

df.apply(lambda x: datetime.date(x['year'], x['month'], x['day']), axis=1)


来源:https://stackoverflow.com/questions/31869257/python-pandas-combine-columns-into-a-date

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!