是否按系列对pandas DataFrame排序,而没有新的列?

时间:2019-01-22 10:49:28

标签: python pandas dataframe

我正在尝试找出最干净的方法来解决此问题。

我有一个熊猫DataFrame。我知道它包含列xy,但是可能包含其他列。如果它们存在,我非常希望忽略它们,让它们保持不变。

作为我的问题的简化版本。假设我想按xy之间的差异对此DataFrame进行排序。

目前,我正在执行以下操作:

def sort_diff(df):
    df = df.copy()
    df['xy'] = abs(df.x - df.y)
    df = df.sort_values('xy')
    df = df.drop('xy')
    return df

现在这并不可怕,但是它会覆盖xy。这是可能存在或可能不存在的列。问题是我不知道。

根据我对熊猫的有限了解,我目前的选择是:

  • xy保留为特殊的列名
  • 使用一些混乱的临时列名来避免冲突(tmp_xy_diff
  • 检查它是否存在,保存是否存在,然后写回。

所以我要问的是,是否有任何方法可以在不压碎表上随机列的情况下进行这种排序。像,我可以使用有序序列(具有匹配的索引)来定义新数据框的顺序吗?如果我可以做这样的事情,性能会明显变差吗?

类似的东西:

def sort_diff(df):
    diffs = (abs(df.x - df.y)).sort_values()
    return df.become_this(diffs.index)

0 个答案:

没有答案