Pandas DataFrame 的异常重塑

Unusual reshaping of Pandas DataFrame

我有一个这样的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 列。

谢谢。

您可以使用 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())