Вам нужно сначала отфильтровать 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