Need to transpose a pandas dataframe

前端 未结 1 837
梦如初夏
梦如初夏 2021-01-03 13:19

I have a Series that look like this:

      col1          id
 0      a           10
 1      b           20
 2      c           30
 3      b           10
 4           


        
相关标签:
1条回答
  • You could use pd.crosstab

    In [329]: pd.crosstab(df.id, df.col1)
    Out[329]:
    col1  a  b  c  d  e
    id
    10    1  1  0  1  0
    20    0  1  0  0  0
    30    1  0  1  0  0
    40    0  0  0  0  1
    

    Or, use pd.pivot_table

    In [336]: df.pivot_table(index='id', columns='col1', aggfunc=len, fill_value=0)
    Out[336]:
    col1  a  b  c  d  e
    id
    10    1  1  0  1  0
    20    0  1  0  0  0
    30    1  0  1  0  0
    40    0  0  0  0  1
    

    Or, use groupby and unstack

    In [339]: df.groupby(['id', 'col1']).size().unstack(fill_value=0)
    Out[339]:
    col1  a  b  c  d  e
    id
    10    1  1  0  1  0
    20    0  1  0  0  0
    30    1  0  1  0  0
    40    0  0  0  0  1
    
    0 讨论(0)
提交回复
热议问题