Объединение нескольких столбцов фрейма данных с условием - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в pandas, и я хочу объединить два фрейма данных с несколькими условиями, примененными к нему. У меня есть master_df и trade_df.

master_df
Country Product
China    Apple
India    Mango
Germany  Apple
India    Mango

master_df ['Country'] может быть экспортным или импортным, который мы можем получить из trade_df

trade_df
Export  Import   Product
India   US         Mango
China   UK         Apple
India   Germany    Apple 

Моя конечная цель - сравнить master_df [ 'Country'] в trade_df ['Export', 'Import'] и Product обоих df и получить результат как

master_df 
Country Product Export  Import 
China    Apple   China   UK
India    Mango   India   US
Germany  Apple   India  Germany

Я не уверен, правильно ли я понимаю, поскольку получаю сообщение об ошибке.

master_df = master_df.merge(trade_df,  on =['country','Product'])

1 Ответ

1 голос
/ 14 июля 2020

Когда вы говорите присоединиться к ['Country', 'Product'], вы указываете pandas найти два столбца на обоих фреймах данных. Однако столбцы для «страны» в ваших двух фреймах данных различаются.

В вашем master_df это Country.

Но в вашем trade_df это Export и Import.

Кроме того, исходя из ваших ожиданий, видно, что вы действительно хотите присоединиться к master_df дважды с trade_df на Country = Export и Country = Import соответственно. Итак, вам нужно соединить их дважды и объединить вместе.

Что вы должны сделать (обратите внимание, что порядок имен столбцов в двух списках должен быть соответствующим):

export_df = master_df.merge(trade_df, left_on=['Country', 'Product'], right_on=['Export', 'Product']).drop_duplicates()
import_df = master_df.merge(trade_df, left_on=['Country', 'Product'], right_on=['Import', 'Product']).drop_duplicates()

df = export_df.append(import_df)
print(df)

Это дает вам результат:

    Country Product Export  Import
0   China   Apple   China   UK
1   India   Mango   India   US
0   Germany Apple   India   Germany
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...