熊猫数据框sort_values设置默认升序= False

时间:2018-06-22 22:43:39

标签: python pandas

是否可以定义一个始终设置sort_values(ascending = False)的属性? 然后以降序频繁使用它来设置默认行为。

4 个答案:

答案 0 :(得分:1)

您可以继承标准pd.DataFrame并仅重新定义.sort_values方法:

class MyDataFrame(pd.DataFrame):
    def sort_values(self,by,axis=0,ascending=False,inplace=False, 
                    kind='quicksort',na_position='last'):
        return super().sort_values(by,axis,ascending,inplace,kind)

foo = MyDataFrame({'z': [1,2,3,4]})
foo.sort_values('z')
#   z
#3  4
#2  3
#1  2
#0  1
foo.sort_values('z',ascending=True)
#   z
#0  1
#1  2
#2  3
#3  4

答案 1 :(得分:0)

您可以为此制作自己的包装器

def sort_values(df, *args, **kwargs):
    if len(args) < 2 and "ascending" not in kwargs:
        kwargs["ascending"] = False
    return df.sort_values(*args, **kwargs)

但是您必须将其用作功能。 (您可以在第一个参数(数据框)之后传递其他参数。

print(sort_values(my_df, data))

答案 2 :(得分:0)

您无法修改熊猫功能。但是一个不错的选择是将其包装在您自己的函数中。

def sort_values(df, sort_by):
    return df.sort_values(ascending=False, by=sort_by)
sort_values(data, ['col1']

答案 3 :(得分:0)

另一种选择是声明您在代码开头经常使用的设置,并将其作为kwargs传递。

但是,我个人会每次将其写出来。

import pandas as pd
p = {"ascending":False, "inplace":True}


df = pd.DataFrame({
    'col1': [1,6,2,5,9,3]
})

df.sort_values(by='col1', **p)

print(df)

返回:

   col1
4     9
1     6
3     5
5     3
2     2
0     1