【问题标题】:Dataframe pivot without sorting the column names?数据框透视而不对列名进行排序?
【发布时间】:2019-07-24 07:36:51
【问题描述】:

原始数据:-

date   variable    value
2017    A             1
2017    C             1
2017    B             2
2018    A             1
2018    C             1
2018    B             2

我的枢轴结果:-

date   A        B        C
2017   1        2        1
2018   1        2        1

预期输出:-

date   A     C     B
2017   1     1     2
2018   1     1     2

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以通过pd.Categorical 实现此目的:

    df.variable=pd.Categorical(df.variable,categories=df.variable.unique(),ordered=True)
    df.pivot_table(index='date',columns='variable',values='value')
    

    variable  A  C  B
    date             
    2017      1  1  2
    2018      1  1  2
    

    这会将订单设置为df.variable.unique(),即[A, C, B]

    【讨论】:

      【解决方案2】:

      以下命令(来自how can i unstack without sorting in pandas?)对我来说没问题:

      print(df.unstack(0).reindex(pd.unique(df.index.get_level_values(1))).sort_index(axis=1,level=1).T)
      

      然后返回:

            A  C  B
      2017  1  1  2
      2018  1  1  2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        相关资源
        最近更新 更多