我想转换以下pandas dataframe
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
你知道一个简单的方法吗?
答案 0 :(得分:1)
我会这样做:
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