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/