首页 > 解决方案 > 将周特征值更改为日期时间格式

问题描述

我有一个包含“周”功能的数据集。此功能表示周数,范围从 1 到 400,如以下数据框摘录所示:

data
Out[12]: 
         Store_id       SKU_id  WEEK  Units_Sold  QTY  PRICE Promotion  
0               2          294   298          11    1   2.62       NaN   
1               2          294   299           9    1   2.51       NaN   
2               2          294   300           6    1   2.49       NaN   
3               2          294   301           5    1   2.99       NaN   

我现在希望在数据框中添加一个新列,以 MM/DD/YY 格式显示日期。我所拥有的所有信息是第 1 周对应于从 09/14/89 开始的星期日期,而第 400 星期对应于从 05/08/97 开始的星期日期。

所需的输出将是这样的(参考上一个数据帧):

data
Out[12]: 
         Store_id       SKU_id  WEEK  Units_Sold  QTY  PRICE Promotion      Date
0               2          294   298          11    1   2.62       NaN  05/25/95
1               2          294   299           9    1   2.51       NaN  06/01/95
2               2          294   300           6    1   2.49       NaN  06/08/95
3               2          294   301           5    1   2.99       NaN  06/15/95

任何帮助表示赞赏。谢谢

标签: pythonpandasdataframe

解决方案


首先创建一个datetime来表示第零周,然后将每个周偏移量添加到它。

start = pd.to_datetime( '09/14/89', format = '%m/%d/%y' )
df[ 'Date' ] = df[ 'WEEK' ].apply( lambda x: start + pd.DateOffset( weeks = x ) )

如果要创建格式化字符串,可以使用该strftime函数。

df[ 'date' ] = df[ 'week' ].apply( lambda x: ( start + pd.DateOffset( weeks = x ) ).strftime( '%d/%m/%y' ) )

推荐阅读