#pandas #dataframe #merge
#панды #фрейм данных #поглощать
Вопрос:
Я пытаюсь объединить пару файлов excel в один большой файл excel. Проблема в том, что имена столбцов в этих файлах разные, хотя данные одни и те же. Другими словами — для одного и того же значения ячейки столбец один раз называется «a» и один раз «b». Когда я объединяю эти файлы, вместо того, чтобы помещать все данные под одни и те же имена столбцов, данные из каждого файла помещаются в разные столбцы. Так что то, как это выглядит в Соединенных Штатах, далеко не великолепно.
Как я могу проверить, имеют ли два столбца одно и то же имя, а затем объединить данные, чтобы они попали в один и тот же столбец? Вот названия столбцов-
файл1.столбцы
Index(['Day', 'Month', 'Year', 'Station', 'Sample ID', 'Syn Conc. (#/mL)', 'Euk Conc. (#/mL)', 'Pro Conc. (#/mL)', **'Hetero Bact. Conc. (#/mL)'**, 'FCS Syn / FCS beads medians ratio', 'FCS Euk / FCS beads medians ratio', 'FCS Pro / FCS beads medians ratio', 'SCS Syn / SCS beads medians ratio', 'SCS Euk / SCS beads medians ratio', 'SCS Pro / SCS beads medians ratio'], dtype='object')
файл2.столбцы
Index(['Day', 'Month', 'Year ', 'Station ', 'Depth (m)', 'Syn Conc. (#/mL)', 'Euk Conc. (#/mL)', 'Pro Conc. (#/mL)', 'Pro-Violet Conc. (#/mL)', **'Hetero Bacteria**', 'FCS Syn / FCS beads medians ratio', 'FCS Euk / FCS beads medians ratio', 'FCS Pro / FCS beads medians ratio', 'FCS Pro-Violet / FCS beads medians ratio', 'SCS Syn / SCS beads medians ratio', 'SCS Euk / SCS beads medians ratio', 'SCS Pro / SCS beads medians ratio', 'SCS Pro-Violet / SCS beads medians ratio', 'Red FL Syn / Red FL beads medians ratio', 'Red FL Euk / Red FL beads medians ratio', 'Red FL Pro / Red FL beads medians ratio', 'Red FL Pro-Violet / Red FL beads medians ratio', 'Orange FL Syn / Orange FL beads medians ratio', 'Analysis Date'], dtype='object')
Заранее спасибо ребятам и девчонкам, Карин 🙂
Ответ №1:
Просто переименуйте свою колонку перед объединением. Предполагая, что вы хотите сохранить формат первого кадра данных, а второй называется df2
:
df2.rename({'Hetero Bacteria': 'Hetero Bact. Conc. (#/mL)'})
Обратите внимание, что операция не выполняется, поэтому либо сделайте:
df2 = df2.rename({'Hetero Bacteria': 'Hetero Bact. Conc. (#/mL)'})
или используйте переименованный фрейм данных в вашей команде слияния (я предполагаю, что это так concat
).:
pd.concat([df1, df2.rename({'Hetero Bacteria': 'Hetero Bact. Conc. (#/mL)'})])
Комментарии:
1. Спасибо! но кажется, что, хотя имена столбцов идентичны, он все равно создает другой столбец (с тем же именем…) и помещает туда значения. Я, кажется, не могу понять, почему он добавляет одни и те же столбцы в отдельный 🙁
2. Пожалуйста, приведите минимальный пример (два небольших кадра данных, команда, которую вы используете для объединения, и ожидаемый результат, который вам не удается получить).