Python 在函数中对值()进行排序。如何允许用户选择要排序的列?或者留下空白

Python 在函数中对值()进行排序。如何允许用户选择要排序的列?或者留下空白,python,pandas,Python,Pandas,我想在默认情况下创建一个函数sorts\u bynothing。但是用户可以选择指定要排序的列 样本df: df= pd.DataFrame({'col1':['mary','john','patrick','michael'], 'col2':[1,2,3,4]}) print(df) col1 col2 0 mary 1 1 john 2 2 patrick 3 3 michael 4 S

我想在默认情况下创建一个函数
sorts\u by
nothing。但是用户可以选择指定要排序的列

样本df:

df= pd.DataFrame({'col1':['mary','john','patrick','michael'],
                 'col2':[1,2,3,4]})
print(df)

      col1  col2
0     mary     1
1     john     2
2  patrick     3
3  michael     4
Sample函数,将一列乘以2

有一个
sort\u by
参数,该参数接受将被排序的列,但我希望默认情况下不进行排序

我的
None
导致错误

def multiply(df,sortby=None):

    # multiply column by 2
    df.col2 = df.col2*2 

    # sort by user choice of column, default no sort
    df.sort_values(by=sortby,inplace=True) 

    print(df)

现在运行该函数:

multiply(df)

KeyError: None
我可以在这行中输入什么:
df.sort\u默认为不排序的值(by=sortby,inplace=True)
?是否有可能以某种方式将其保留为“空白”?默认情况下,我尝试按
df.index
排序,但这也是不可能的

我知道我可以通过添加一个用户可以指定的布尔参数来实现,例如,如果sort==True:sort\u值(by=column)否则:无排序

但我只想知道,是否可以为
sort\u值(by=)
设置默认的
by=
值,以允许它保持未排序,或者可能按索引排序,或者按照它进入函数的原始排序


我希望我说的有道理。这有点难以解释

您需要一个简单的
if
语句:

def multiply(df,sortby=None):

    # multiply column by 2
    df.col2 = df.col2*2 

    # sort by user choice of column, default no sort
    if sortby is not None:
        df.sort_values(by=sortby,inplace=True) 

    print(df)

调用
对值排序
并要求它。。。根本不排序。如果得到
None
,则不要调用
sort\u值