我有一组奥运奖牌得主的数据。我正在努力寻找拥有最多奖牌的国家。应用groupby函数后如何处理该系列?
这是我的数据框。
ID Name Sex Age City Sport Medal
0 1 A Dijiang M 24.0 Barcelona Basketball Gold
1 2 A Lamusi M 23.0 London Judo Silver
...
我将以下函数应用于名为qq的数据框:
zz = qq[qq.Medal =='Gold'].groupby(['NOC', 'Medal'])
zz.Medal.value_counts()
NOC Medal Medal
ALG Gold Gold 5
ANZ Gold Gold 20
ARG Gold Gold 91
ARM Gold Gold 2
应用该功能后,如何分析该zz系列?
例如,我如何才能获得最多奖牌的国家? 如果我在没有“金牌”奖牌限制的情况下分组,那么如何计算每个国家的奖牌总数?
答案 0 :(得分:0)
您需要先过滤掉NaN
枚奖牌,然后进行汇总。这是一个示例:
import pandas as pd
df = pd.DataFrame([['USA', 'Gold'],
['USA', 'Bronze'],
['USA', 'NaN'],
['UK', 'Silver'],
['UK', 'NaN']],
columns=['NOC', 'Medal'])
valid_medals = df[df['Medal'] != 'NaN']
medal_count = valid_medals.groupby(['NOC'], as_index=False)\
.count().sort_values(by=['Medal'],ascending=False)
print(medal_count)
print('Top country:')
print(medal_count.iloc[0])
输出:
NOC Medal
1 USA 2
0 UK 1
Top country:
NOC USA
Medal 2
Name: 1, dtype: object