我如何在python Pandas中合并两个数据框?为什么合并后某些值会被跳过?

问题描述 投票:0回答:1

这里有三个数据帧: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()
python pandas dataframe merge
1个回答
0
投票

这里您正在“国家/地区”列上的这三个数据框(能源,ScimEn和GDP)之间执行内部联接。内部联接仅给出在所有3个数据框中具有匹配国家/地区的行。您的数据在前4个排名中可能没有匹配的国家/地区。

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

© www.soinside.com 2019 - 2024. All rights reserved.