pandas 数据框重塑/枢轴

pandas dataframe reshape / pivot

我想转换以下 pandas 数据帧

    a   b
0   1   2
1   1   5
2   2   4
3   1   3
4   3   7
5   2   1

    0   1   2
a           
1   2   5   3  
2   4   1   NaN
3   7   NaN NaN

你知道一个简单的方法吗?

我会这样做:

In [11]: df.groupby("a")["b"].apply(lambda x: pd.Series(x.values))
Out[11]:
a
1  0    2
   1    5
   2    3
2  0    4
   1    1
3  0    7
Name: b, dtype: int64

为了得到你想要的形式然后拆开(虽然可能更好):

In [22]: df.groupby('a')["b"].apply(lambda x: pd.Series(x.values)).unstack(1)
Out[22]:
     0    1    2
a
1  2.0  5.0  3.0
2  4.0  1.0  NaN
3  7.0  NaN  NaN