我想转置具有字符串值的数据帧
我已经提到了下面的代码
df_new= pd.pivot_table(df,values = 'col4', index = ['col1','col2'],
columns = ['col3'])
可用输出
col1 col2 col3 col4
a 1 1 aa
a 1 2 bb
a 1 3 cc
a 1 4 dd
b 2 1 ee
b 2 2 ff
b 2 3 gg
b 2 4 hh
期望的输出
在此处输入图像描述
我认为您需要set_index
unstack
如果唯一的组合col1
,col2
和col3
:
df_new = (df.set_index(['col1','col2','col3'])['col4']
.unstack()
.add_prefix('col3_')
.reset_index()
.rename_axis(None,1))
print (df_new)
col1 col2 col3_1 col3_2 col3_3 col3_4
0 a 1 aa bb cc dd
1 b 2 ee ff gg hh
如果可能的话,重复,则聚合函数join
:
df_new= pd.pivot_table(df,values = 'col4',
index = ['col1','col2'],
columns = ['col3'],
aggfunc=','.join).add_prefix('col3_').reset_index().rename_axis(None,1)
print (df_new)
col1 col2 col3_1 col3_2 col3_3 col3_4
0 a 1 aa bb cc dd
1 b 2 ee ff gg hh