#python #pandas #dataframe #join #merge
#python #pandas #фрейм данных #Присоединиться #слияние
Вопрос:
У меня есть два фрейма данных df1 и df2, каждый из которых имеет следующую структуру: идентификатор и другие переменные
df1
id var1 var2
100 1 blue
100 2 orange
101 3 red
102 1 apple
df2
id var3 var4
99 2 purple
100 3 pineaple
100 4 banana
100 15 pumpkin
70 1 juice
Некоторые ключи являются общими для обоих фреймов данных. Мне нужно объединить их, чтобы получить что-то вроде этого:
id var1 var2 var3 var4
99 none none 2 purple
100 1 blue 3 pineaple
100 2 orange 4 banana
100 none none 15 pumpkin
101 3 red none none
102 1 apple none none
70 none none 1 juice
Это для объединения информации по общим индексам. Я пробовал объединения и слияния, но я всегда получаю «широковещательную» версию таблицы. Учитывая общие индексы в обеих таблицах, pandas повторяет каждую строку первого фрейма данных для каждой строки второго. Это выглядит так:
id var1 var2 var3 var4
99 none none 2 purple
100 1 blue 3 pineaple
100 1 blue 4 banana
100 1 blue 15 pumpkin
100 2 orange 3 pineaple
100 2 orange 4 banana
100 2 orange 15 pumpkin
101 3 red none none
102 1 apple none none
70 none none 1 juice
Что я могу попробовать, чтобы получить то, что мне нужно?
Заранее спасибо
Еще немного информации
У меня есть две команды, работающие над планами технического обслуживания промышленного предприятия. Каждый из них дал мне заказ на поставку, содержащий детали, которые должен купить завод. Я хочу сравнить их планы, чтобы найти различия в их заказах на поставку с учетом общих планов. Кроме того, кто-то может работать над планом, которого нет у другой команды.
Комментарии:
1. Возможно
pd.concat
?2. pd.concat((df1, df2), ось = 1)
3. В вашем примере, как вы узнаете, какая строка с id = 100 в df2 совпадает с id = 100 в df1? Если это просто порядок (1, синие строки вверх с 3, ананас, потому что они являются первой строкой id = 100 в каждом df), то вы можете добавить столбец в каждый df, в котором указано, какой экземпляр идентификатора для текущей строки является идентификатором, тогда вы можете использовать оба столбцав вашем соединении
4. Я предполагаю, что var1 и var3 — это единицы измерения для того, что находится в var2 и var4, и в этом случае вы хотели бы сначала суммировать каждую таблицу по отдельности, чтобы у вас была взаимно однозначная связь между строками. Затем вы можете объединить наборы данных вместе.