我想转置具有字符串的数据帧



我想转置具有字符串值的数据帧

我已经提到了下面的代码

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如果唯一的组合col1col2col3

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

最新更新