pandas.объединение нескольких фреймов данных с использованием только общих столбцов

#python #pandas #dataframe

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

Вопрос:

У меня есть несколько pandas объектов фрейма данных cost1, cost2, cost3 ….

  1. Они имеют разные имена столбцов (и количество столбцов), но имеют некоторые общие черты.
  2. Количество столбцов в каждом фрейме данных довольно велико, поэтому выбор общих столбцов вручную будет болезненным.

Как я могу добавлять строки из всех этих фреймов данных в один фрейм данных, сохраняя при этом элементы только из общих имен столбцов?

На данный момент у меня есть

 frames=[cost1,cost2,cost3]

new_combined = pd.concat(frames, ignore_index=True)
  

Очевидно, что это содержит столбцы, которые не являются общими для всех фреймов данных.

Ответ №1:

Для будущих читателей вышеуказанная функциональность может быть реализована самой pandas. Pandas может объединять фрейм данных, сохраняя только общие столбцы, если вы укажете аргумент join=’inner’ в pd.concat. например

 pd.concat(frames,join='inner', ignore_index=True)
  

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

1. Спасибо, это был гораздо лучший ответ для меня, и его преимущество заключается в лучшем сохранении порядка столбцов

Ответ №2:

Вы можете найти общие столбцы с помощью Python set.intersection :

 common_cols = list(set.intersection(*(set(df.columns) for df in frames)))
  

Для объединения с использованием только общих столбцов вы можете использовать

 pd.concat([df[common_cols] for df in frames], ignore_index=True)