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
我有以下 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