我正在尝试找出最干净的方法来解决此问题。
我有一个熊猫DataFrame。我知道它包含列x
和y
,但是可能包含其他列。如果它们存在,我非常希望忽略它们,让它们保持不变。
作为我的问题的简化版本。假设我想按x
和y
之间的差异对此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)