Python 如何去掉最后一列中的零
我正在做一项应用数据科学的作业 问题: 将%的可再生能源切成5个垃圾箱。欧洲大陆排名前15位,以及这些新的%可再生垃圾箱。每一组中有多少个国家? 此函数应返回一个包含多索引的系列,然后返回%RENERABLE的箱子。不包括没有国家/地区的组 这是我的代码:Python 如何去掉最后一列中的零,python,pandas-groupby,Python,Pandas Groupby,我正在做一项应用数据科学的作业 问题: 将%的可再生能源切成5个垃圾箱。欧洲大陆排名前15位,以及这些新的%可再生垃圾箱。每一组中有多少个国家? 此函数应返回一个包含多索引的系列,然后返回%RENERABLE的箱子。不包括没有国家/地区的组 这是我的代码: def answer_twelve(): Top15 = answer_one() ContinentDict = {'China':'Asia', 'United States':'
def answer_twelve():
Top15 = answer_one()
ContinentDict = {'China':'Asia',
'United States':'North America',
'Japan':'Asia',
'United Kingdom':'Europe',
'Russian Federation':'Europe',
'Canada':'North America',
'Germany':'Europe',
'India':'Asia',
'France':'Europe',
'South Korea':'Asia',
'Italy':'Europe',
'Spain':'Europe',
'Iran':'Asia',
'Australia':'Australia',
'Brazil':'South America'}
Top15['Continent'] = Top15.index.to_series().map(ContinentDict)
Top15['bins'] = pd.cut(Top15['% Renewable'],5)
return pd.Series(Top15.groupby(by = ['Continent', 'bins']).size())#,apply(lambda x:s if x['Rank']==0 continue))
answer_twelve()
这是我对上述代码的输出
Continent bins
Asia (2.212, 15.753] 4
(15.753, 29.227] 1
(29.227, 42.701] 0
(42.701, 56.174] 0
(56.174, 69.648] 0
Australia (2.212, 15.753] 1
(15.753, 29.227] 0
(29.227, 42.701] 0
(42.701, 56.174] 0
(56.174, 69.648] 0
Europe (2.212, 15.753] 1
(15.753, 29.227] 3
(29.227, 42.701] 2
(42.701, 56.174] 0
(56.174, 69.648] 0
North America (2.212, 15.753] 1
(15.753, 29.227] 0
(29.227, 42.701] 0
(42.701, 56.174] 0
(56.174, 69.648] 1
South America (2.212, 15.753] 0
(15.753, 29.227] 0
(29.227, 42.701] 0
(42.701, 56.174] 0
(56.174, 69.648] 1
dtype: int64
所需输出为
Continent bins
Asia (2.212, 15.753] 4
(15.753, 29.227] 1
Australia (2.212, 15.753] 1
Europe (2.212, 15.753] 1
(15.753, 29.227] 3
(29.227, 42.701] 2
North America (2.212, 15.753] 1
(56.174, 69.648] 1
South America (56.174, 69.648] 1
Name: Countries, dtype: int64
我想去掉零,我试着用
pd.Series(Top15.groupby(by = ['Continent', 'bins']).size().apply(lambda x:s if x['Rank']==0 continue))
但我一直得到以下错误
File "<ipython-input-317-14bc05bb2137>", line 20
return pd.Series(Top15.groupby(by = ['Continent', 'bins']).size().apply(lambda x:s if x['Rank']==0 continue))
^
SyntaxError: invalid syntax
文件“”,第20行
return pd.Series(Top15.groupby(by=['Continent','bins']).size().apply(如果x['Rank']==0,则lambda x:s continue))
^
SyntaxError:无效语法
我无法找出我的错误。请帮帮我
lambda x:s if x['Rank']==0 continue
这没有任何意义,因为continue
仅在循环中有用。
请注意,您需要一个值来打印。相反,将其设置为空白:
lambda x:"" if x['Rank']==0 else s
使用pandas并在列为零时删除行 如果列名称是您的列:
df=df[df.column\u name!=0]
ds=answer\u seven()
和ds[ds!=0]
非常感谢您的帮助!您好,我尝试了这种方法,但无法打印输出。Codetop=Top15[Top15.Rank!=0]返回pd.Series(Top15.groupby(by=[columendict,bins]).size().apply(top))
我想我搞砸了。请建议一种方法。请创建一个最小的可复制示例,以便我们可以帮助编写代码。这里是可用于执行函数的数据。answer\u seven()
我无法生成源函数的片段,相反,我可以为answer\u one()提供输出文件。其余的数据在答案_十二()中。希望这能起作用。对不起,如果我不能提供足够的资源<代码>这里是.csv文件的链接(answer_one()的输出)——https://drive.google.com/file/d/11L2mDL73McEwNi35pULFHk6fYr0qlenE/view?usp=sharing@shinigamisiofrath请遵循社区建议->嘿,我尝试过这种方法,但肯定犯了错误。请帮忙。Codepd.Series(Top15.groupby(by=[colontandict,bins]).size().apply(lambda x:“if x['Rank']==0 else”“)
代替“s”,我将其留空。然后根据发布指南将尝试编辑到您的问题中。“犯了一个错误”不是一个问题规范。请提供预期的价格。