【问题标题】:Python: Rearrange column order in DataFrame by ascending valuesPython:通过升序值重新排列DataFrame中的列顺序
【发布时间】:2014-05-13 23:31:39
【问题描述】:

我的 DataFrame 列是:

df.columns
>>>Index([u'1', u'10', u'120', u'1800', u'30', u'300', u'3600', u'5', u'60', u'600'], dtype='object')

如何对我的列进行排序,以便获得像1, 5, 10, 30, 60, 120, 300, 600, 1800, 3600 这样的升序? 我试过这个: df = df.reindex_axis(sorted(df.columns), axis=1)

但不适用于数字。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    给你:

    df.rename(columns=int).sort(axis=1)
    

    rename 需要一个函数来转换。

    【讨论】:

      【解决方案2】:

      您可以将它们转换为整数,然后排序。

      In [16]: idx = df.columns
      In [17]: df.columns = idx.astype(int)
      
      In [18]: idx.order()
      Out[18]: Int64Index([1, 5, 10, 30, 60, 120, 300, 600, 1800, 3600], dtype='int64')
      

      您需要将数据框的列设置为 int 版本。然后拨打df = df[idx.order()]

      【讨论】:

      • 谢谢,但 .astype(int) 应用于我的 df 中的值,而不仅仅是列。如何仅将我的列放入int
      • 这里,idx = df.columns。所以你根本不需要改变你的价值观。抱歉,如果不清楚。
      • id -> idx,你的意思是?
      • 你是对的 DSM,谢谢。也意味着将其设置为列,而不是索引:)
      猜你喜欢
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      相关资源
      最近更新 更多