Pandas 转换,将索引值复制到列值

Pandas transformation, duplicate index values to column values

我有以下 pandas 数据框:

    0
0                      
A   0
B   0
C   0
C   4
A   1
A   7

现在有一些索引字母(A 和 C)出现了多次。我希望这些索引字母的值在旁边的额外列而不是额外的行上。所需的 pandas 数据框如下所示:

    0   1       3
0                      
A   0   1       7
B   0   np.nan  np.nan
C   0   4       np.nan

任何事情都会有所帮助!

IIUC,您需要添加一个辅助列:

(df.assign(group=df.groupby(level=0).cumcount())
   .set_index('group', append=True)[0] # 0 is the name of the column here
   .unstack('group')
)

或:

(df.reset_index()
   .assign(group=lambda d: d.groupby('index').cumcount())
   .pivot('index', 'group', 0) # col name here again
)

输出:

group    0    1    2
A      0.0  1.0  7.0
B      0.0  NaN  NaN
C      0.0  4.0  NaN