Панды sort_values ​​() внутри функции. Как разрешить пользователю выбирать столбец для сортировки? Или, возможно, оставьте пустым - PullRequest
0 голосов
/ 07 октября 2019

Я хочу создать функцию по умолчанию sorts_by ничего. Но у пользователя есть возможность указать столбец для сортировки.

Sample 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

Функция выборки, умножает столбец на два.

Имеет аргумент sort_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_values(by=sortby,inplace=True), которая по умолчанию не сортируется? Можно ли как-нибудь оставить его пустым? Я пробовал сортировать по df.index по умолчанию, но это также невозможно.

Я знаю, что могу сделать это, возможно, добавив логический аргумент, который пользователь может указать, например, if sort==True: sort_values(by=column) else: no sorting

Но япросто хотел бы конкретно знать, возможно ли установить значение by= по умолчанию для sort_values(by=), которое позволит ему оставаться не отсортированным, или, возможно, отсортированным по индексу, или с оригинальной сортировкой, введенной в функцию.

Надеюсь, у меня есть смысл. Это было немного сложно объяснить.

1 Ответ

0 голосов
/ 07 октября 2019

Вам нужно простое 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...