Добавление фрейма данных внутри функции python не работает?

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Я пытаюсь добавить серию списков к их соответствующим фреймам данных, но это не будет работать в функции. Я не совсем уверен, почему это не сработает, поскольку я могу заставить его работать вне функции. Тем не менее, я хочу поместить все это в одну функцию, чтобы она была более чистой и могла быть вызвана позже.

 def append_to_df(list_object):
    i=0
    for list in list_object:
        current_df=df_list[i]
        current_df=current_df.append(list, ignore_index=True)
        #current_df=current_df.drop_duplicates(ignore_index=True, keep=False)
        i =1
    return None
 

Когда я вызываю функцию, я даю ей список из 30 списков, содержащих данные, которые я хочу добавить к 30 фреймам данных, которые у меня есть в соответствующем df_list. Однако после вызова функции все фреймы данных по-прежнему пусты. Я полагаю, что это может быть простой концептуальной проблемой с функциями, кто-нибудь может сказать мне, почему добавление фрейма данных работает вне моей функции, но не внутри?

Спасибо

Комментарии:

1. вы пробовали df_list[i] = df_list[i].append(append(list, ignore_index=True) ?

2. Это относится к пространствам имен python, в вашей функции current_df переназначается и не влияет на переменную df_list вне функции.

3. df_list[i] = df_list[i].append(alist, ignore_index=True) может быть работа, потому что df_list находится в пространстве имен globle. Это означает, что вы манипулируете df_list внутри функции, и это работает.

Ответ №1:

Пожалуйста, не используйте «список», который может привести к неизвестным проблемам / результатам:

Используйте это:

 def append_to_df(list_object):    
    for i, lst in enumerate(list_object):
        df_list[i] = df_list[i].append(lst, ignore_index=True)