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值