#python #python-3.x #pandas #dataframe #return
#python #python-3.x #pandas #фрейм данных #Возврат
Вопрос:
С помощью этого фрейма данных :
index order_id id_product qty comments date last_name
0 0 55 100000158 2 NaN 2020-10-26T14:33:00 Stone
1 1 55 100000339 1 NaN 2020-10-26T14:33:00 Stone
Я создаю список, groupby и применяю :
list_test = []
df_g = df.groupby('order_id')
df_g.apply(process_order,dealer_id,file)
Тестовая функция для проверки того, как вернуть элемент :
def process_order(df,dealer_id,file):
if True:
return 'bob'
Как я могу добавить возвращаемую строку ‘test’ из process_order в список list_test ?
Итак, чтобы иметь в качестве результата :
print(list_test)
['bob']
Комментарии:
1. Я признаю, что не понимаю, что вы пытаетесь здесь сделать. Я верю, что функции передаются для
apply
принятия только одного аргумента. Сказав это, единственный способ добавить элемент в списокtest_list
— это получить ссылку на него из-за пределов области действия функции (например, если он объявлен, например, в модуле или в функции, в которуюtest_function
вложен) или передать его в качестве аргумента функции.2. Я пытаюсь перечислить ошибки в функции process_order(), чтобы обработать их позже. Если в функции process_order() все идет хорошо, то list_test должен быть пустым. Но если ошибка обнаружена, я хотел бы добавить ее в список
3. Вы можете добавить список ошибок к параметрам вашей функции и добавить любые подобные ошибки.
def process_order(df,dealer_id,file, errors_list):
4. Как я уже сказал, есть два способа получить ссылку на этот список: передать его в качестве аргумента или получить к нему доступ из содержащей области. Вы даже можете импортировать его для другого модуля, если он был объявлен на уровне модуля (хотя я бы не рекомендовал это.)
Ответ №1:
Обратите внимание, что я согласен с другим ответившим человеком в том, что трудно понять, как / почему вы группируете так, как вы есть, но вы можете просто создать новый столбец с именем ‘test’ во время операции. Что-то вроде:
df_g['test'] = df_g.apply(process_order,dealer_id,file)
После применения функции к группе или всему фрейму данных вы можете получить список, используя
list_test = df_g['test'].tolist()
в зависимости от того, что находится в или не в, вам может потребоваться отфильтровать фрейм данных или группу для строк, где test пуст, перед созданием списка