这里有三个数据帧: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()
在这里,您正在国家栏上执行这3个数据帧(能源、ScimEn和GDP)之间的内部联接。内部联接仅提供在所有3个数据帧中具有匹配国家/地区的行。您的数据在前4个排名中可能没有匹配的国家
如果您可以显示每个单独的数据帧和合并的数据帧,我可以为您提供更多帮助
相关问题 更多 >
编程相关推荐