【发布时间】:2022-01-05 01:34:32
【问题描述】:
我有一个包含近 100 家商店的时间序列数据集。时间段是几年(但并非所有商店都适用 - 有一些旧的和新的)。
| Store_num | date | Sales |
|---|---|---|
| 23 | 01Jan2012 | 125 |
| 23 | 01Feb2012 | 12 |
| 23 | 01Mar2012 | 388 |
| ... | ... | ... |
| 57 | 01Jan2013 | 456 |
| 57 | 01Feb2013 | 555 |
| 57 | 01Mar2013 | 545 |
| 57 | 01Apr2013 | 657 |
| ... | ... | ... |
为了预测未来的销售额(第一种方法是使用 statsmodels),我决定将 df 更改为:
| date | 23_sales | 57_sales |
|---|---|---|
| 01Jan2012 | 125 | NaN |
| 01Feb2012 | 12 | NaN |
| 01Mar2012 | 388 | NaN |
| ... | ... | ... |
| 01Jan2013 | ... | 456 |
| 01Feb2013 | ... | 555 |
| 01Mar2013 | ... | 545 |
| 01Apr2013 | ... | 657 |
| ... | ... | ... |
我可以一一添加这些列,但我无法创建某种循环。 我的做法是一一做的:
store_23 = df[df['Store_num'] == 23].copy()
store_23.set_index(store_23['date'], inplace = True)
store_23.drop(['Store', 'date'], axis = 1, inplace = True)
store_23.columns = ['23_sales']
我也在考虑创建一个销售名称列表(列名):
df_list = df['Store_num'].unique()
y_list = [str(num) + "_y" for num in df_list]
而不是创建新的 df 并使用 groupby 添加数据,但我在这种方法中也失败了。
谁能给我一些建议?也许我的方法完全错误?
【问题讨论】:
-
使用 pandas 将日期列格式化为
datetime格式正确。 @Tom 另外,您要查找的内容称为unstack -
当我制作这些表格时,我正在查看原始 df,这就是我在格式化之前写日期的原因......我的错误。方法 df.unstack 看起来类似于 .pivot 也许它可以通过两种方式完成,但 .pivot 对我有用!感谢您的建议!
标签: python pandas dataframe time-series forecasting