这里有三个数据帧:energy
,ScimEn
和GDP
。在合并energy
和ScimEn
之前,我尝试打印energy
,并且获得了全部227个值。当我尝试打印ScimEn
时,我会根据等级(从1到15)获得所有值。但是,一旦我基于国家/地区调用合并功能,它就会跳过前四个排名。此外,它从排名5开始。我无法调试代码。请忽略这些注释,因为在调试过程中我尝试在所有时间点打印所有内容。
import pandas as pd
import numpy as np
def answer_one():
energy = pd.read_excel ('Energy Indicators.xls',skiprows=17,skip_footer=(38))
energy=energy[[2,3,4,5]]
energy.columns=['Country','Energy Supply','Energy Supply per Capita','% Renewable']
energy=energy.replace('...',np.NaN)
#print(energy.columns)
energy['Energy Supply']=1000000*energy['Energy Supply']
energy['Country']=energy['Country'].replace({"Republic of Korea": "South Korea"})
energy['Country']=energy['Country'].replace({"United States of America": "United States"})
energy['Country']=energy['Country'].replace({"United Kingdom of Great Britain and Northern Ireland": "United Kingdom"})
energy['Country']=energy['Country'].replace({"China, Hong Kong Special Administrative Region": "Hong Kong"})
energy['Country']=energy['Country'].str.replace(r"\(.\)","")
#print(energy)
GDP=pd.read_csv('world_bank.csv',skiprows=4)
GDP=GDP[[0,50,51,52,53,54,55,56,57,58,59]]
GDP=GDP.rename(columns={'Country Name':'Country'})
#print(GDP.columns)
#print(GDP)
ScimEn=pd.read_excel('scimagojr-3.xlsx')
#print(ScimEn)
ScimEn=ScimEn[:15]
#print(ScimEn)
new_df=pd.merge(ScimEn,energy,how='inner',left_on='Country',right_on='Country')
#print(new_df)
#print(df1.sort_values('Rank',ascending=True))
new_df_final=pd.merge(new_df,GDP,how='inner',left_on='Country',right_on='Country')
#print(new_df_final.columns)
#new_df_final=new_df_final.sort_values('Rank',ascending=True)
#new_df_final=new_df_final[:15]
new_df_final=new_df_final.set_index('Country')
#print(final_df)
return new_df_final
answer_one()
这里您正在“国家/地区”列上的这三个数据框(能源,ScimEn和GDP)之间执行内部联接。内部联接仅给出在所有3个数据框中具有匹配国家/地区的行。您的数据在前4个排名中可能没有匹配的国家/地区。
如果您可以显示每个单独的数据框并合并,则可以为您提供更多帮助。