Python 数据帧的异常重塑

Python 数据帧的异常重塑,python,pandas,pivot,reshape,Python,Pandas,Pivot,Reshape,我有这样一个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

我有这样一个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列必须包含唯一的值

现在,我不知道如何得到你的专栏


谢谢。

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

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

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

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

谢谢!非常好的解决方案,谢谢!绝妙的解决方案。