#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть несколько pandas
объектов фрейма данных cost1, cost2, cost3 ….
- Они имеют разные имена столбцов (и количество столбцов), но имеют некоторые общие черты.
- Количество столбцов в каждом фрейме данных довольно велико, поэтому выбор общих столбцов вручную будет болезненным.
Как я могу добавлять строки из всех этих фреймов данных в один фрейм данных, сохраняя при этом элементы только из общих имен столбцов?
На данный момент у меня есть
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)