【问题标题】:Panda Pivot - Sort by ColumnPanda Pivot - 按列排序
【发布时间】:2017-03-21 11:29:47
【问题描述】:

我的熊猫数据透视表中的数据如下所示:

df:
    sum
    PrctChange
    Year        2011        2012        2013        2014        2015
    CountryName                 
    Argentina   17.378744   5.750719    7.923327    -0.062792   8.889681
    Belize      0.515086    -1.278683   16.819298   -0.104759   10.539688
    Burundi     0.000000    inf         3.209646    2.165577    6.411365

我正在尝试按 2015 年的数据对其进行排序,以便将其列为伯利兹、阿根廷和布隆迪(2015 年的值按降序排列)

我看到了一些非常相关和类似的问题,但它们似乎对我不起作用

From this question,我试过了:

pivot_sorted = df_values(('PrctChange', 2015))

得到了这个错误:

KeyError: ('PrctChange', 2015)

From this question,我试过了:

pivot_sorted = df.sortlevel(["2015"], ascending=[False], sort_remaining=False)

我没有收到错误,但没有排序。

最后,我尝试了这个

pivot_sorted = df.sort_values(by=(df['2015']), ascending=False,inplace=True)

得到了这个错误:

KeyError: '2015'

有人可以帮忙吗?谢谢!

【问题讨论】:

  • 你试过 df.sort_values(by='2015', ascending=False,inplace=True)?
  • @A-Za-z 谢谢你的建议。我遇到了另一个关键错误:2015 :-(
  • 发布df.index的输出
  • 谢谢@TedPetrou 这可能是我找不到解决方案的问题的一部分。我这样做了,得到了一个国家列表:'Index(['Argentina', 'Belize', 'Burundi'], dtype='object', name='CountryName')''
  • 对不起,如果这是一个唠叨......只是不知道标签是否在编辑评论区域工作。 @TedPetrou

标签: python pandas pivot


【解决方案1】:

列是一个三级 MultiIndex 对象。您必须使用所有三个级别来选择一列。

df.sort_values(('sum', 'PrctChange', '2015'), ascending=False)

【讨论】:

  • 如此接近!非常感谢@ted petrou!有什么办法可以降序排列吗?
  • 加ascending=False
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 2013-10-10
  • 2018-10-23
  • 1970-01-01
  • 2020-01-15
  • 2020-07-02
  • 2021-10-20
  • 1970-01-01
相关资源
最近更新 更多