我想转置具有字符串值的数据框
我已经在下面提到了代码
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
答案 0 :(得分:1)
我认为如果col1
,col2
和col3
的唯一组合是set_index
和unstack
:
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