如何在python中合并两个数据帧?为什么合并完成时会跳过某些值?

2024-05-13 06:36:00 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有三个数据帧:energyScimEnGDP。 在我合并energyScimEn之前,我试着打印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()

Tags: columnsdfnewoncountryreplaceunitedenergy
1条回答
网友
1楼 · 发布于 2024-05-13 06:36:00

在这里,您正在国家栏上执行这3个数据帧(能源、ScimEn和GDP)之间的内部联接。内部联接仅提供在所有3个数据帧中具有匹配国家/地区的行。您的数据在前4个排名中可能没有匹配的国家

如果您可以显示每个单独的数据帧和合并的数据帧,我可以为您提供更多帮助

相关问题 更多 >