不到一半的时候,作者用下面这行代码计算了独特的奖牌获得者的数量:
medal_winners = len(df[df.Medal.fillna('None') != 'None'].Name.unique())这看起来相当不必要的复杂,所以我试着简化它。
最终,我相信这行代码是在说:首先检查'Medal‘列中的非空值,然后获取获得奖牌的唯一名称的数量。
对我来说,这是:检查' medal‘的非空值,然后按名称分组,并获得获得奖牌的唯一名称的数量。奖牌的类型并不重要,所以如果无名氏赢得了三枚不同的奖牌,我只会数他一次。我想要的是独特奖牌获得者的总数。
我想出了这个:
medal_winners = df['Medal'].notnull().groupby['Name'].nunique()但是我得到了这个错误:TypeError: 'method' object is not subscriptable
我还尝试了其他一些我认为可以工作的变体,但每次都会遇到错误。
我以为上面的方法会起作用,但它不是。
发布于 2019-12-17 07:34:38
我只是弄明白了这一点,但即使使用groupby(),解决方案仍然比我预期的要长--或者我应该说我没有实现我认为会更加简化的结果:
medal_winners = df[df['Medal'].notnull()].groupby('Name')['Name'].nunique().sum()我的基于groupby()的解决方案和作者给出的答案都是: 28202
https://stackoverflow.com/questions/59365364
复制相似问题