我正在努力解决Introduction to data science on coursera的作业3。在完成了第一个问题(基本上是清理和合并数据帧)之后,我们转到了问题2。
Question 1打算合并三个数据帧:
第一个df是关于每个国家的能源(227个基于国家的countries);
他们要求我们只合并这三个数据框架,以县为指标,只考虑前15个级别,这是很好的。
第二个问题是,当我们根据前15级合并3个表时损失了多少行:
--前面的问题--加入了三个数据集,然后将其简化为前15个条目。当您加入数据集时,但在将其简化为前15项之前,您丢失了多少项?
这个函数应该返回一个数字。

我所做的解决方法是使用以下方法合并GDP和Energy表:
energy_gdp = pd.merge(energy, GDP, how='inner', right_on='Country', left_on='Country')
print(len(energy_gdp))从GDP中返回264行中的186项,从能源表中返回227行。
然后,我将energy_gdp与ScimEn合并,但没有前15位:
ScimEn = ScimEn[15:]和:
df = pd.merge(ScimEn, Energy_GDP_df, left_on='Country', right_on='Country', how='inner')
return len(df)结果是147行。
在网上搜索解决方案时,结果是156。
我做了以下工作,以确保我的答案是正确的:
ScimEn_initial = ScimEn[:15] # Took only the first 15 ranks
df_initial = pd.merge(ScimEn_initial, Energy_GDP_df, left_on='Country', right_on='Country', how='inner')
# ScimEn = ScimEn[15:]
df = pd.merge(ScimEn, Energy_GDP_df, left_on='Country', right_on='Country', how='inner')
return len(df)-len(df_initial)一共有147个条目。
我在堆栈溢出时查看了这个post,但是没有显示答案。
这是合并三个数据帧但它们的内部交叉的正确方式吗?
根据赋值一般规则,我们可以在堆栈溢出流上搜索或发布解决方案:
这个作业需要更多的个人学习,而不是上一个--我们鼓励你查阅大熊猫文档,找出你可能还没有使用过的函数或方法,或者问一些关于堆栈溢出的问题,并将它们标记为熊猫和蟒蛇相关的。当然,讨论论坛是开放的,可以与您的同行和课程工作人员进行互动。
发布于 2021-08-20 17:27:27
我知道为时已晚,但可能会对别人有帮助。
def answer_one():
energy = pd.read_excel('Energy+Indicators.xls')
energy = energy[17:244].reset_index(drop=True)
energy.drop(energy.columns[0:2], axis=1, inplace=True)
energy.rename(columns={energy.columns[0]:'Country', energy.columns[1]:'Energy Supply', energy.columns[2]:'Energy Supply per Capita', energy.columns[3]:'% Renewable'}, inplace=True)
energy.replace('...', np.NaN, inplace=True)
energy['Energy Supply'] = energy['Energy Supply'] * 1000000
energy['Country'] = energy['Country'].str.replace('\d+','')
replacement1 = {"Republic of Korea": "South Korea", "United States of America": "United States", "United Kingdom of Great Britain and Northern Ireland": "United Kingdom", "China, Hong Kong Special Administrative Region": "Hong Kong"}
energy['Country'].replace(replacement1, inplace=True)
energy['Country'] = energy['Country'].str.replace(r" \(.*\)","")
GDP = pd.read_csv('world_bank.csv', skiprows=4)
GDP.rename(columns={'Country Name':'Country'}, inplace=True)
replacement2 = {"Korea, Rep.": "South Korea", "Iran, Islamic Rep.": "Iran", "Hong Kong SAR, China": "Hong Kong"}
GDP['Country'].replace(replacement2, inplace=True)
ScimEn = pd.read_excel('scimagojr-3.xlsx')
GDP_last10_years = GDP.drop(GDP.columns[4:-10], axis=1)
merged_df1 = pd.merge(left=ScimEn, right=GDP_last10_years, how='left', left_on='Country', right_on='Country')
merged_all_df_big = pd.merge(left=merged_df1, right=energy, how='left', left_on='Country', right_on='Country')
merged_all_df = merged_all_df_big.head(15)
remove_cols = ['Country Code', 'Indicator Name', 'Indicator Code']
merged_all_df.drop(remove_cols, axis=1, inplace=True)
merged_all_df.set_index('Country', inplace=True)
return merged_all_dfhttps://stackoverflow.com/questions/63423820
复制相似问题