2017-01-26 40 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

謝謝!輝煌的解決方案。 –