首页 > 解决方案 > 从字符串列创建年份-周列以进行时间序列分析python

问题描述

我想对要聚合为年-周格式的数据运行 VAR(向量自动回归)模型。我的日期与会计周的 iso 日历不匹配(它们是自定义的,由公司使用)

我有以下格式:

PROMO_WEEK
2018-PW-01
2018-PW-02
2018-PW-03
.
.
.
2019-PW-52

我想收到以下被识别为日期的格式

PROMO_WEEK
2018-01
2018-02
2018-03
.
.
.
2019-52

我试过了:

date_id_promo_week_id['PROMO_WEEK'] = pd.to_datetime(date_id_promo_week_id['PROMO_WEEK'], format = '%y-PW-%W')

但它给出了错误,我找不到该问题的具体解决方案。感谢帮助。

标签: pythonpython-3.xpandas

解决方案


如评论中所述,您不能同时拥有两者。它要么datetime是正确的格式,要么string是您预期的输出。

还有一个问题是它也%W需要一个 day 值,所以我们人为地添加它:


选项1:作为datetime

df['new_col'] = pd.to_datetime(df['PROMO_WEEK'].str.replace('-PW', '')+'0', format='%Y-%W%w')

   PROMO_WEEK    new_col
0  2018-PW-01 2018-01-07
1  2018-PW-02 2018-01-14
2  2018-PW-03 2018-01-21

选项 2: as string,采用预期格式:

df['new_col'] = pd.to_datetime(
    df['PROMO_WEEK'].str.replace('-PW', '')+'0', format='%Y-%W%w').dt.strftime('%Y-%W')


   PROMO_WEEK  new_col
0  2018-PW-01  2018-01
1  2018-PW-02  2018-02
2  2018-PW-03  2018-03

推荐阅读