【问题标题】:Calculate the total counts using pandas pivot table使用 pandas 数据透视表计算总计数
【发布时间】:2016-06-28 05:09:24
【问题描述】:

我有一个这样的数据框:

student     class       subject       date          status

jack        class-1     maths       20150101        fail
jack        class-1     maths       20150205        win
jack        class-1     maths       20150310        fail
jack        class-1     maths       20150415        fail
mathew      class-2     maths       20150102        win
mathew      class-2     maths       20150208        win
mathew      class-2     maths       20150315        win
john        class-3     maths       20150125        fail

是不同日期学生的数学竞赛状态, 有些学生不会错过某些日期的比赛。 如何使用 pandas pivot table 函数获得这样的结果

student     class       subject  fail   win
jack        class-1     maths      3     1
mathew      class-2     maths      0     3
john        class-3     maths      1     0 

【问题讨论】:

    标签: python pandas dataframe pivot multiple-columns


    【解决方案1】:

    您可以将pivot_tablereset_index 一起使用:

    df = df.pivot_table(index=['student','class','subject'], 
                        columns='status', 
                        values='date', 
                        aggfunc=len,
                        fill_value=0).reset_index()
    print (df)
    status student    class subject  fail  win
    0         jack  class-1   maths     3    1
    1         john  class-3   maths     1    0
    2       mathew  class-2   maths     0    3
    

    最后你可以通过rename_axis删除列名(pandas0.18.0中的新功能):

    df = df.rename_axis(None, axis=1)
    #pandas bellow 0.18.0
    #df.columns.name = None
    print (df)
      student    class subject  fail  win
    0    jack  class-1   maths     3    1
    1    john  class-3   maths     1    0
    2  mathew  class-2   maths     0    3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-07
      • 2016-09-06
      • 2019-04-15
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多