我有一個包含近 100 家商店的時間序列資料集。時間段是幾年(但不是所有商店 - 有一些新舊商店)。
| 店鋪編號 | 日期 | 銷售量 |
|---|---|---|
| 23 | 2012 年 1 月 1 日 | 125 |
| 23 | 2012 年 2 月 1 日 | 12 |
| 23 | 01Mar2012 | 388 |
| ... | ... | ... |
| 57 | 01Jan2013 | 456 |
| 57 | 2013 年 2 月 1 日 | 555 |
| 57 | 01Mar2013 | 545 |
| 57 | 01Apr2013 | 657 |
| ... | ... | ... |
為了執行未來銷售的預測(使用 statsmodels 的第一種方法),我決定將該 df 更改為:
| 日期 | 23_銷售 | 57_銷售 |
|---|---|---|
| 2012 年 1 月 1 日 | 125 | NaN |
| 2012 年 2 月 1 日 | 12 | NaN |
| 01Mar2012 | 388 | NaN |
| ... | ... | ... |
| 01Jan2013 | ... | 456 |
| 2013 年 2 月 1 日 | ... | 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 添加資料,但我在這種方法中也失敗了。
誰能給我一些建議?也許我的方法完全錯誤?
uj5u.com熱心網友回復:
iiuc 你想要 df.pivot:
df = pd.DataFrame(
{
'store_num':[0,0,0,1,1,1,2,2,2],
'date':[1,2,3]*3,
'sales':np.random.randint(0,10,9),
}
)
df.pivot(index='date', columns='store_num')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369039.html
上一篇:如何獲取給定索引的資料幀的前一行
下一篇:根據列的最大行數創建新行
