【问题标题】:Pandas: How to swap a row's cell values so that they are in alphabetical orderPandas:如何交换一行的单元格值,以便它们按字母顺序排列
【发布时间】:2019-04-09 08:09:36
【问题描述】:

我有以下数据框:

  COL1 |  COL2  | COL3
 'Mary'| 'John' | 'Adam'

如何重新排序这一行,以便在 COL1、COL2 和 COL3 中按字母顺序对“Mary”、“John”和“Adam”进行排序,如下所示:

  COL1 |  COL2  | COL3
 'Adam'| 'John' | 'Mary'

【问题讨论】:

    标签: python pandas sorting dataframe


    【解决方案1】:

    使用sort

    df.values.sort()
    df
    Out[256]: 
         COL1     COL2       COL3
    0   'Adam'   'John'    'Mary'
    

    【讨论】:

      【解决方案2】:

      你可以通过np.sort赋值:

      df.iloc[:] = pd.DataFrame(np.sort(df.values, axis=1))
      
      # also works, performance not yet tested
      # df[:] = pd.DataFrame(np.sort(df.values, axis=1))
      
      print(df)
      
         COL1  COL2  COL3
      0  Adam  John  Mary
      

      【讨论】:

      • 其实df[:] 就足够了。 ++
      • @coldspeed,是的,我认为应该。我从来没有真正理解何时触发副本与覆盖值。例如。我已经看到了 performance differentialsdf[df.columns[::-1]] 相比 df.iloc[:, ::-1] 的显着性。你知道它们在一般情况下是否等同于 setting 吗?
      • 好问题....根据我的经验,我总是发现分配给 df[:]、df.values 或 df.iloc[:] 会产生类似的结果...不确定是否底层机制是一样的......应该是,如果它直接更新底层的numpy数组。
      猜你喜欢
      • 2022-07-08
      • 2020-01-16
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2012-05-04
      • 2020-03-29
      • 1970-01-01
      相关资源
      最近更新 更多