2017-10-18 1 views
0

J'ai deux dataframes et je veux les combiner en utilisant le pays comme index.Concaténer deux trames de données avec une chaîne comme index

Mes dataframes (tête) se présenter comme suit:

indice de développement humain

  CPI-2016 Region 
Country   
New Zealand 90 AP 
Denmark  90 WE/EU 
Finland  89 WE/EU 
Sweden   88 WE/EU 
Switzerland 86 WE/EU 

corruption

   HDI-2015 
Country  
Afghanistan 0.479 
Albania 0.764 
Algeria 0.745 
Andorra 0.858 
Angola 0.533 

une concaténés: result = pandas.concat([hdi, cpi])

  CPI-2016 HDI-2015 Region 
Country   
Afghanistan NaN   0.479 NaN 
Albania  NaN   0.764 NaN 
Algeria  NaN   0.745 NaN 
Andorra  NaN   0.858 NaN 
Angola  NaN   0.533 NaN 

et à la fin il y a les entrées avec cpi et région, mais sans le hdi. en outre, il y a deux fois plus de rangées que les pays dans les données.

+0

Jetez un oeil à la documentation pandas de l'opération de jointure: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html –

+0

Rejoindre par index est possible avec pandas – Rockbar

+0

Vous oubliez 'axis = 1' comme 'result = pandas.concat ([hdi, cpi], axis = 1)' – jezrael

Répondre

0

Vous pouvez le faire avec merge().

hdi.index = hdi.index.str.strip() 
pd.merge(hdi, cpi, left_index=True, right_index=True) 
+0

https://stackoverflow.com/questions/46809710/concatenate-two-data-frames-with-string-as-index#comment80567494_46809710 – jezrael

+0

Merci @jezrael complètement raté ce commentaire :) – zipa

0

human_development_index.set_index ('Country') rejoindre (corruption.set_index ('Country'), sur 'Pays' =)