首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据一列中的非空值计算另一列中的唯一值

根据一列中的非空值计算另一列中的唯一值
EN

Stack Overflow用户
提问于 2019-12-17 06:53:28
回答 1查看 34关注 0票数 0

解决这个问题:https://towardsdatascience.com/exploratory-statistical-data-analysis-with-a-real-dataset-using-pandas-208007798b92

不到一半的时候,作者用下面这行代码计算了独特的奖牌获得者的数量:

代码语言:javascript
运行
复制
medal_winners = len(df[df.Medal.fillna('None') != 'None'].Name.unique())

这看起来相当不必要的复杂,所以我试着简化它。

最终,我相信这行代码是在说:首先检查'Medal‘列中的非空值,然后获取获得奖牌的唯一名称的数量。

对我来说,这是:检查' medal‘的非空值,然后按名称分组,并获得获得奖牌的唯一名称的数量。奖牌的类型并不重要,所以如果无名氏赢得了三枚不同的奖牌,我只会数他一次。我想要的是独特奖牌获得者的总数。

我想出了这个:

代码语言:javascript
运行
复制
medal_winners = df['Medal'].notnull().groupby['Name'].nunique()

但是我得到了这个错误:TypeError: 'method' object is not subscriptable

我还尝试了其他一些我认为可以工作的变体,但每次都会遇到错误。

我以为上面的方法会起作用,但它不是。

EN

回答 1

Stack Overflow用户

发布于 2019-12-17 07:34:38

我只是弄明白了这一点,但即使使用groupby(),解决方案仍然比我预期的要长--或者我应该说我没有实现我认为会更加简化的结果:

代码语言:javascript
运行
复制
medal_winners = df[df['Medal'].notnull()].groupby('Name')['Name'].nunique().sum()

我的基于groupby()的解决方案和作者给出的答案都是: 28202

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59365364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档