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

时间:2019-01-10 11:46:36

标签: python pandas

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

我已经在下面提到了代码

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  

所需的输出
enter image description here

1 个答案:

答案 0 :(得分:1)

我认为如果col1col2col3的唯一组合是set_indexunstack

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