我尝试合并两个不同大小的数据框架,两者都由“国家/地区”编制索引。第一个数据框' 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')
答案 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