Python&Pandas:将列合并为d

2024-06-28 19:10:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的dataframe中,时间分为3列:yearmonthday,如下所示: enter image description here

如何将它们转换成date,以便进行时间序列分析?

我可以做到:

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

它给出:

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

但接下来呢?

编辑: 这就是我的结局:

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']

Tags: lambdafrom编辑dataframedfdatetimedate时间
2条回答

将日期格式化为字符串并立即重新分析它是没有意义的;请改用datetime构造函数:

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

下面是如何将值转换为时间:

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)

相关问题 更多 >