2017-01-26 217 views
1

我有一个DF这样的:大熊猫据帧的异常重塑

df = pd.DataFrame({'x': ['a', 'a', 'b', 'b', 'b', 'c'], 
        'y': [1, 2, 3, 4, 5, 6], 
       }) 

它看起来像:

x y 
0 a 1 
1 a 2 
2 b 3 
3 b 4 
4 b 5 
5 c 6 

我需要重塑它在保持“X”列中的唯一方式:

x y_1 y_2 y_3 
0 a 1 2 NaN 
1 b 3 4 5 
2 c 6 NaN NaN 

因此的 'y_N' 列最大N具有等于

max(df.groupby('x').count().values) 

并且x列必须包含唯一值。

现在我没有得到如何获得y_N列。

谢谢。

回答

4

您可以使用pandas.crosstabcumcount列作为columns参数:

(pd.crosstab(df.x, df.groupby('x').cumcount() + 1, df.y, 
      aggfunc = lambda x: x.iloc[0]) 
    .rename(columns="y_{}".format).reset_index()) 

enter image description here

+0

谢谢!辉煌的解决方案。 –