如何使用另一列的值从一列创建多列?

How to create multiple columns from one column using values from another column?

我有一个包含近 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 添加数据,但我在这种方法中也失败了。

谁能给我一些建议?也许我的方法完全错误?

你想要的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')