Pandas合并无法提取常见的索引值

时间:2017-07-20 02:23:05

标签: python pandas dataframe merge

我尝试合并两个不同大小的数据框架,两者都由“国家/地区”编制索引。第一个数据框' GDP_EN'包含世界上的每个国家,第二个数据框“ScimEn'包含15个国家。

当我尝试合并这些DataFrame时,我没有根据ScimEn的索引国家合并列,而是回到了Country_x'和' Country_y'。 ' Country_x'来自GDP_EN,这是按字母顺序排列的前15个国家。 ' Country_y'是来自ScimEn的15个国家。我想知道为什么他们没合并?

我用过:

DF=pd.merge(GDP_EN,ScimEn,left_index=True,right_index=True,how='right')

1 个答案:

答案 0 :(得分:1)

我认为DataFrames不是Country的索引,Country是列添加参数on='Country'

GDP_EN = pd.DataFrame({'Country':['USA','France','Slovakia', 'Russia'],
                       'a':[4,8,6,9]})
print (GDP_EN)
    Country  a
0       USA  4
1    France  8
2  Slovakia  6
3    Russia  9

ScimEn = pd.DataFrame({'Country':['France','Slovakia'],
                       'b':[80,70]})
print (ScimEn)
    Country   b
0    France  80
1  Slovakia  70

DF=pd.merge(GDP_EN,ScimEn,left_index=True,right_index=True,how='right')
print (DF)
  Country_x  a Country_y   b
0       USA  4    France  80
1    France  8  Slovakia  70

DF=pd.merge(GDP_EN,ScimEn,on='Country',how='right')
print (DF)
    Country  a   b
0    France  8  80
1  Slovakia  6  70

如果Country是索引,它可以完美运行:

GDP_EN = pd.DataFrame({'Country':['USA','France','Slovakia', 'Russia'],
                       'a':[4,8,6,9]}).set_index('Country')
print (GDP_EN)
          a
Country    
USA       4
France    8
Slovakia  6
Russia    9

print (GDP_EN.index)
Index(['USA', 'France', 'Slovakia', 'Russia'], dtype='object', name='Country')

ScimEn = pd.DataFrame({'Country':['France','Slovakia'],
                       'b':[80,70]}).set_index('Country')
print (ScimEn)
           b
Country     
France    80
Slovakia  70

print (ScimEn.index)
Index(['France', 'Slovakia'], dtype='object', name='Country')

DF=pd.merge(GDP_EN,ScimEn,left_index=True,right_index=True,how='right')
print (DF)
          a   b
Country        
France    8  80
Slovakia  6  70