Как создать столбец из другого df в соответствии с соответствующими столбцами? - PullRequest
1 голос
/ 31 января 2020

У меня есть df по имени население с колонкой по имени страны. Я хочу объединить строки, чтобы они отражали регионы = (Африка, Западный Подол, Азия, Европа, Ближний Восток). У меня есть еще один df по имени regionref из kaggle, в котором есть все страны мира и регион, с которым они связаны.

Как создать новый столбец в населении df, который имеет соответствующие регионы для стран в столбце стран, используя столбец регионов из набора данных kaggle.

так что, по сути, это кадр данных о населении

CountryName 1960 1950 ...

US
Zambia 
India 

И это набор данных regionref

Country  Region      GDP...

US       West Hem
Zambia   Africa
India    Asia 

И я хочу, чтобы население df выглядело как

CountryName  Region    1960   1950 ...

US           West Hem
Zambia       Africa
India        Asia

РЕДАКТИРОВАТЬ: я попытался объединение, но по какой-то причине два столбца не распознают одинаковые значения

population['Country Name'].isin(regionref['Country']).value_counts()

Это вернуло False для всех значений, поскольку в них нет общих значений.

И это вывод, как вы можете видеть, что есть общие значения enter image description here

1 Ответ

0 голосов
/ 31 января 2020

Вам просто нужна функциональность соединения, или, скажем, объединение, pandas способом.

Учитывая два всплывающих окна DataFrames, регион:


pop = pd.DataFrame([['US', 1000, 2000], ['CN', 2000, 3000]], columns=['CountryName', 1950, 1960])

CountryName 1950    1960
0   US  1000    2000
1   CN  2000    3000

region = pd.DataFrame([['US', 'AMER', '5'], ['CN', 'ASIA', '4']], columns = ['Country', 'Region', 'GDP'])

Country Region  GDP
0   US  AMER    5
1   CN  ASIA    4

Вы можете сделать:

pd.concat([region.set_index('Country'), pop.set_index('CountryName')], axis = 1)\
    .drop('GDP', axis =1)

    Region  1950    1960
US  AMER    1000    2000
CN  ASIA    2000    3000


Ось = 1 предназначена для объединения по горизонтали. Вы должны установить индекс столбца для правильного соединения.

...