python - 如何在pandas groupby中获得最少的值出现次数

标签 python pandas dataframe pandas-groupby

          home_team_name  home_team_goal_count
0         Bayern München                     2
1         Bayern München                     2
2         Bayern München                     1
3                   Köln                     2
4                   Köln                     2

我按变量 home_team_name 上的数据分组。

df.groupby("home_team_name")

home_team_goal_count 的值只能是 2 或 1。我想得到最少的出现次数 每组中的值。我想要的结果是 1 代表拜仁慕尼黑,0 代表科隆。为了说明拜仁慕尼黑有 2 次 2 和 1 次 1,因此最小值为 1。科隆有 2 次 2 和 0 次 1,因此最小值为 0。

最佳答案

SeriesGroupBy.value_counts 的第一个计数值, 为所有组合 1,2 reshape 并添加 0 并最后通过 min 获得最小值:

s = (df.groupby("home_team_name")['home_team_goal_count']
       .value_counts()
       .unstack(fill_value=0)
       .min(axis=1))

print (s)
home_team_name
Bayern München    1
Köln              0
dtype: int64

详情:

print (df.groupby("home_team_name")['home_team_goal_count']
         .value_counts()
         .unstack(fill_value=0))
home_team_goal_count  1  2
home_team_name            
Bayern München        1  2
Köln                  0  2

如果可能,输入数据中只有 1 或只有 2 值是必需的 reindex:

s = (df.groupby("home_team_name")['home_team_goal_count']
       .value_counts()
       .unstack(fill_value=0)
       .reindex([1, 2], axis=1, fill_value=0) 
       .min(axis=1))

关于python - 如何在pandas groupby中获得最少的值出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63048863/

相关文章:

python - 使用字符串在数据框中进行迭代

python - 如何在python的多处理进程中存储函数的返回值?

python - 仅当值不同时才创建新列

python - 如何在 Pandas 中获取数据框的列片

Python:如何以最简单的方式比较两个数组

python - 检查文件路径是否是Python中的 block 设备

Python( Pandas ): replace value if previous value is same as next value

python - 如何使用python替换数据框中缺失的年份

python - 如何对列值为列表的 pandas DataFrame 进行子集化?

pandas - 根据之前的数据填写数据框