代码之家  ›  专栏  ›  技术社区  ›  RustyShackleford

如何将列中的值转换为列标题?

  •  1
  • RustyShackleford  · 技术社区  · 7 年前

    我的测向仪是这样的:

        Id   field          value
    0   1    first_name      a
    1   1    number          123
    2   1    last_name       aa
    0   2    first_name      b
    1   2    number          456
    2   2    last_name       bb
    3   2    type            p
    

    每个Id都有不同长度的索引和大致相同的字段类型,但有些Id有更多,有些则更少。

    就像这样:

        Id   first_name   number   last_name    type
    0   1      a          123         aa    
    1   2      b          456         bb         p
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   ALollz    7 年前

    这也只是 .pivot

    df.pivot(index='Id', columns='field', values='value').reset_index()
    #field  Id first_name last_name number type
    #0       1          a        aa    123  NaN
    #1       2          b        bb    456    p
    

    ['Id', 'field'] . 这将使它工作,但将选择值作为 DataFrame .

    pd.pivot_table(df, index='Id', columns='field', values='value', aggfunc='first')
    
        2
  •  3
  •   user3483203    7 年前

    我想你想 set_index unstack :

    out = df.set_index(['Id', 'field']).unstack()
    out.columns = out.columns.get_level_values(1)
    out.reset_index()
    

    field  Id first_name last_name number type
    0       1          a        aa    123  NaN
    1       2          b        bb    456    p