python - Python:如何仅显示按国家/地区划分的运动员人数最多的运动?
问题描述
我需要为“国家”列中的每个值找到运动员人数最多的运动。我的数据框有列“国家”、“运动”、“名称”。
尝试使用 .groupby 方法,但无法弄清楚
试过 df.groupby('country', 'sport').count() 这给了我按国家分组的每项运动的运动员人数,但我不知道如何从这里找到每个国家最大的运动。
任何帮助都会很棒:)
解决方案
你的代码:
df.groupby('country', 'sport').count()
相当于:
df.value_counts(['country', 'sport'])
因此,从这里,您可以按“国家”对输出进行分组并获取每个组的第一行,因为默认情况下数据已经按降序排序:
正如评论中所建议的,您必须设置一个MRE才能获得帮助*:
# For example
import pandas as pd
import numpy as np
import string
countries = ['France', 'Spain', 'Italy']
sports = ['Football', 'Tennis', 'Basketball']
names = list(string.ascii_uppercase)
N = len(names)
df = pd.DataFrame({'country': np.random.choice(countries, N+1),
'sport': np.random.choice(sports, N+1),
'name': names})
>>> df.value_counts(['country', 'sport']).groupby('country').head(1)
country sport
France Football 5
Italy Basketball 4
Spain Tennis 3
dtype: int64
*如果您已经有一些数据要共享,更简单的 MRE 是复制/粘贴print(df.head(20).to_string(index=False))
样本是否相关的输出。有了这样的输出,我们就可以pd.read_clipboard()
在 DataFrame 中加载数据。
推荐阅读
- flutter - 如何判断 AnimationController 的动画方向?
- amazon-web-services - 在特定 EC2 实例运行时收到通知
- r - limer 登录“错误:参数 'txt' 必须是 JSON 字符串、URL 或文件。”
- python - PyQt5 使用 pdfkit 创建 pdf - 每个 pdf 都会弹出 wkhtmltopdf.exe 窗口
- javascript - 为什么单击按钮后重新排序不起作用?
- gpflow - 我可以深度复制“gpflow.models.GPModel”吗?(GPflow2)
- c++ - BOOL 返回 -1、0 或正数
- postgresql - 如何在 PostgreSQL 中使用任意键提取 JSON 的值?
- output - 了解 Elixir 输出
- search - Azure 搜索中的通配符搜索 startwith 无法正常工作