Python 填充一个数据帧,将不同帧的列的值对折并保留索引

Python 填充一个数据帧,将不同帧的列的值对折并保留索引,python,pandas,Python,Pandas,我有以下类型的数据帧: df = pd.DataFrame({'price':[1,2,3,2,2,3,1,2,1], 'quantity':[10,20,30,10,20,30,20,20,10]}) df Out[10]: price quantity 0 1 10 0 2 20 1 3 30 1 2 10 1 4 20 2 3 30 3

我有以下类型的数据帧:

df = pd.DataFrame({'price':[1,2,3,2,2,3,1,2,1], 'quantity':[10,20,30,10,20,30,20,20,10]})
df
Out[10]: 
   price  quantity
0      1        10
0      2        20
1      3        30
1      2        10
1      4        20
2      3        30
3      1        20
4      2        20
4      1        10
我想创建第二个日期框,如下所示:

df_bucket = pd.DataFrame(columns=np.arange(0, 5, 1), index=df.index)
     0    1    2    3    4
0  NaN  10   20   NaN  NaN
1  NaN  NaN  10   30   20
2  NaN  NaN  NaN  30   NaN
3  20   NaN  NaN  NaN  NaN
4  10   20   NaN  NaN  NaN
我尝试了以下方法,但速度非常慢,只产生了一堆NaN

df_bucket.loc[df.index][df['price']] = df['quantity']
df_bucket
Out[12]: 
     0    1    2    3    4
0  NaN  NaN  NaN  NaN  NaN
1  NaN  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN  NaN
3  NaN  NaN  NaN  NaN  NaN
4  NaN  NaN  NaN  NaN  NaN
我知道我可以在一个for循环中完成这项工作,但我相信这将需要很长时间,你知道有什么更快的方法来完成这项工作吗

为了提供一些上下文,这些是订单簿数据,大部分由唯一的时间戳索引。我想用每个价格级别的列重新组织数据框架,并保留索引,这实际上是一种非常低效但方便的数据组织方式。 数据帧有几十万行,这就是为什么我需要一种比在行上循环更有效的方法

df = pd.DataFrame({'ind':[0,0,1,1,1,2,3,4,4],
                    'price':[1,2,3,2,2,3,1,2,1], 
                   'quantity':[10,20,30,10,20,30,20,20,10]})
df.pivot_table(index=df.ind,columns='price',values='quantity')
df
输出:
您需要
df.pivot\u表(index=df.index,columns='price',values='quantity')
 price   1       2      3
    ind         
    0   10.0    20.0    NaN
    1   NaN     15.0    30.0
    2   NaN     NaN     30.0
    3   20.0    NaN     NaN
    4   10.0    20.0    NaN