2 回答

TA贡献2037条经验 获得超6个赞
您可以使用groupby,取值并将其转换为序列。
df.groupby(['code','fruit'])['subcode'].apply(
lambda x: x.values
).apply(pd.Series)
.add_prefix('subcode_')
subcode_0 subcode_1 subcode_2
code fruit
100 berries 100A 100B 100C
200 tropical 200A 200B NaN
300 tropical 300A NaN NaN
400 berries 400A NaN NaN
500 nuts 500A NaN NaN

TA贡献1951条经验 获得超3个赞
set_index和unstack和一起玩一点,您会得到的。
(df.set_index(['code', 'fruit'])
.set_index(df.subcode.str.extract('([a-zA-Z]+)', expand=False), append=True)
.subcode
.unstack()
.fillna('') # these last three
.reset_index() # operations are
.rename_axis(None, axis=1) # not important
)
code fruit A B C
0 100 berries 100A 100B 100C
1 200 tropical 200A 200B
2 300 tropical 300A
3 400 berries 400A
4 500 nuts 500A
添加回答
举报