通过按特定字符串结果过滤来创建新数据框

时间:2017-11-20 13:33:09

标签: python-3.x pandas dataframe

我有“数据”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

我不知道如何添加它。

2 个答案:

答案 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')

过滤国家/地区的下一步现在可以正常工作,我不再使用空数据框了。