Pandas Dataframe - переименовывать столбцы на основе имени dataframe - PullRequest
1 голос
/ 08 мая 2019

Я хочу написать функцию, которая обновляет имена столбцов df на основе имени df.

У меня есть несколько DFS с одинаковыми столбцами. Мне нужно в конечном итоге объединить эти DFS в один DF. Чтобы определить, откуда первоначально были получены данные после объединения, я хочу обновить имена столбцов, добавив идентификатор к имени столбца в каждом отдельном файле df

Я пытался использовать словарь (dict) в функции для обновления столбцов, но не смог заставить это работать

Я попытался выполнить следующую функцию:

def update_col(input):

    dict = {'df1': 'A'
            ,'df2': 'B'
            }
    input.rename(columns= {'Col1':'Col1-' + dict[input]
                            ,'Col2':'Col2-' + dict[input]
                            },inplace= True)

Мой тест:

df1:

Col1  Col2
foo   bah
foo   bah

df2:

Col1  Col2
foo   bah
foo   bah

Запустив функцию следующим образом, я хочу получить:

update_col(df1)

df1:

Col1-A  Col2-A
foo     bah
foo     bah

1 Ответ

2 голосов
/ 08 мая 2019

Я думаю, что лучший способ будет:

mydict = {'df1': 'A'
        ,'df2': 'B'
        }

d={'df'+str(e+1):i for e,i in enumerate([df1,df2])} #create a dict of dfs

final_d={k:v.add_suffix('-'+v1) for k,v in d.items() for k1,v1 in mydict.items() if k==k1}
print(final_d)

{'df1':   Col1-A Col2-A
0    foo    bah
1    foo    bah, 'df2':   Col1-B Col2-B
0    foo    bah
1    foo    bah}

затем вы можете получить доступ к dfs как final_d['df1'] и т. Д.

Примечание: Пожалуйста, не используйте dict в качестве имени словаря, так как это встроенная функция Python

...