У меня есть несколько фреймов данных, которые имеют одинаковое количество столбцов с одинаковыми именами. Почему-то хочется переименовать все эти столбцы со словарем.
Я знаю, как это сделать для одного кадра данных за раз, используя функцию переименования панд, например:
df = df.rename(columns = {"1": "a", etc.})
Я хотел бы добавить цикл для каждого фрейма данных из списка фреймов данных (df_list), но по какой-то причине он не работает так, как я ожидал.
df_list = (df1, df2)
for i in df_list:
i = i.rename(columns = {
'1':'a',
'2':'b',
'3':'c', etc.})
Приведенный выше код не дает никаких ошибок и ничего не меняет. Опять же, и df1, и df2 имеют одинаковую структуру (столбцы = «1», «2», «3» и т. д.).
Я бы с радостью прочитал любое предложение о том, как я могу автоматизировать переименование этих столбцов... Спасибо!
Используйте список df_list = [df1, df2]
Спасибо вам обоим. Хотя переход от кортежа к списку, безусловно, хорошо, он не решил мою проблему в одиночку. Использование inplace = True сделало.
Вы пытаетесь изменить неизменяемый кортеж. Вместо этого используйте список:
df_list = [df1, df2]
for i in df_list:
i = i.rename(columns = {
'1':'a',
'2':'b',
'3':'c', ...})
Большое спасибо, вместе с inplace=True это решило мою проблему.
Какая у вас версия панды? inplace=True не требуется, потому что вы создаете копию, когда назначаете i = i.rename
Ну и заметил потом, что действительно, inplace=true не нужен. Просто пришлось применить это к моей реальной работе, а не к примеру. Моя версия панд — «0.23.4». Спасибо
добавить
inplace=True
в функцию переименования