我有“数据”DataFrame:包含列:' CountryName',' CountryCode',IndicatorName',' IndicatorCode','年& #39;,'价值'我希望从中提取识字率和教育费用的数据,以检查它是否具有核心价值。我希望在三个国家之间进行比较:挪威(最高人类发展指数-HDI),圭亚那(中等人类发展指数)中非共和国(人类发展指数最低)以及世界平均水平。
我的计划是首先提取两个指标的行并创建新的数据框:
money=data.loc[data['IndicatorName']== 'Adult literacy rate, population 15+ years, both sexes (%)']'
'literacy=data.loc[data['IndicatorName']== 'Adult literacy rate, population 15+ years, both sexes (%)']
然后对国家/地区执行相同的操作,按照IndicatorName对国家/地区DataFrame进行匹配,并将它们并排比较。
但是当我输入时:
Norway_money=money.loc[money['CountryName']== 'Norway']
Norway_money.head
我明白了:
"空数据框列的绑定方法NDFrame.head:[CountryName,IndicatorCode,Year,Value]索引:[]"
当我尝试:Norway_money=money['CountryName'].str.contains ('Norway')
我得到布尔数据类型而不是数值。
我正在研究这个数据集超过一个星期,并且做得不好。我发现学习如何努力编程。我在论坛上搜索过,但是我无法找到我理解的答案。谁能帮助我并指出我正确的方向?
我正在处理的数据集位于链接https://www.kaggle.com/worldbank/world-development-indicators
下我不知道如何添加它。
答案 0 :(得分:0)
当我尝试:
时Norway_money = money['CountryName'].str.contains('Norway')
我得到布尔数据类型而不是数值
那是因为您应该从原始数据框中选择money['CountryName'].str.contains('Norway')
返回True
的索引。
这是由new_df = money[money['CountryName'].str.contains ('Norway')]
答案 1 :(得分:0)
我找到了解决问题的原因。过滤数据后找到所需的指标:
money=data.loc[data['IndicatorName']=='Expenditure on education as % of total government expenditure (%)']
,
我已将结果保存到csv文件:
money.to_csv('money_out')
并重新打开它:data_money=pd.read_csv('C://Week-6/money_out.csv')
。
过滤国家/地区的下一步现在可以正常工作,我不再使用空数据框了。