【问题标题】:Sort dataframe by length of a string column [duplicate]按字符串列的长度对数据帧进行排序[重复]
【发布时间】:2018-02-20 23:22:34
【问题描述】:

使用 Python。我有一个包含三列的数据框:

Author | Title | Reviews

我想按评论列中的字符串长度排序。

如果我这样做了

df.sort_values('Review', ascending = False)

它按字母顺序排序,从“z”开始。

如何让它按评论列中字符串的长度排序?

【问题讨论】:

    标签: python string pandas sorting dataframe


    【解决方案1】:

    我认为您需要 len 来分配索引的长度,sort_index 和最后一个 reset_index

    df = pd.DataFrame({'Author':list('abcdef'),
                       'Title ':list('abcdef'),
                       'Review':['aa', 'aasdd', 'dwd','dswee dass', 'a', 'sds']})
    
    print (df)
      Author      Review Title 
    0      a          aa      a
    1      b       aasdd      b
    2      c         dwd      c
    3      d  dswee dass      d
    4      e           a      e
    5      f         sds      f
    
    df.index = df['Review'].str.len()
    df = df.sort_index(ascending=False).reset_index(drop=True)
    print (df)
      Author      Review Title 
    0      d  dswee dass      d
    1      b       aasdd      b
    2      c         dwd      c
    3      f         sds      f
    4      a          aa      a
    5      e           a      e
    

    【讨论】:

      【解决方案2】:

      选项 1
      使用 df.argsortdf.reindex

      df
      
         Review
      0     abc
      1  foo123
      2       b
      
      df = df.reindex((-df.Review.str.len()).argsort()).reset_index(drop=True)
      df
      
        Review
      0  foo123
      1     abc
      2       b
      

      选项 2
      使用 np.argsort

      的类似解决方案
      df = df.reindex(np.argsort(-df.Review.str.len())).reset_index(drop=True)
      df
      
         Review
      0  foo123
      1     abc
      2       b
      

      选项 3
      使用 df.sort_valuesdf.iloc

      df = df.iloc[(-df.Review.str.len()).argsort()].reset_index(drop=True)
      df
      
         Review
      0  foo123
      1     abc
      2       b
      

      【讨论】:

        猜你喜欢
        • 2017-07-19
        • 2014-02-13
        • 2021-03-16
        • 2016-04-23
        • 2011-11-26
        • 2018-02-23
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多