【问题标题】:How to Pivot a table in csv horizontally in Python using Pandas df?如何使用 Pandas df 在 Python 中水平旋转 csv 中的表格?
【发布时间】:2017-03-24 07:08:44
【问题描述】:

我有这种格式的数据 -

MonthYear HPI Div State_fips
1-1993 105.45 7 5
2-1993 105.58 7 5
3-1993 106.23 7 5
4-1993 106.63 7 5

所需的数据透视表为:

工作人员 1-1993 2-1993 3-1993 4-1993
5 105.45 105.58 106.23 106.63

(对熊猫很陌生)

【问题讨论】:

    标签: python csv pandas dataframe pivot


    【解决方案1】:

    使用unstackpivot

    df1 = df.set_index(['State_fips', 'MonthYear'])['HPI'].unstack()
    MonthYear   1-1993  2-1993  3-1993  4-1993
    State_fips                                
    5           105.45  105.58  106.23  106.63
    
    df1 = df.pivot(index='State_fips', columns='MonthYear', values='HPI')
    MonthYear   1-1993  2-1993  3-1993  4-1993
    State_fips                                
    5           105.45  105.58  106.23  106.63
    

    但如果重复,需要与groupbypivot_table聚合,mean可以改为summedian,...:

    print (df)
      MonthYear     HPI  Div  State_fips
    0    1-1993  105.45    7           5
    1    2-1993  105.58    7           5
    2    3-1993  106.23    7           5
    3    4-1993  100.00    7           5 <-duplicates same 4-1993, 5
    4    4-1993  200.00    7           5 <-duplicates same 4-1993, 5
    
    df1 = df.pivot_table(index='State_fips', columns='MonthYear', values='HPI', aggfunc='mean')
    MonthYear   1-1993  2-1993  3-1993  4-1993
    State_fips                                
    5           105.45  105.58  106.23   150.0 <- (100+200/2) = 150
    
    df1 = df.groupby(['State_fips', 'MonthYear'])['HPI'].mean().unstack()
    MonthYear   1-1993  2-1993  3-1993  4-1993
    State_fips                                
    5           105.45  105.58  106.23   150.0 <- (100+200/2) = 150
    

    最后如果需要从索引创建列并删除列名:

    df1 = df1.reset_index().rename_axis(None, axis=1)
    print (df1)
       State_fips  1-1993  2-1993  3-1993  4-1993
    0           5  105.45  105.58  106.23   150.0
    

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 2018-01-20
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多