You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按Country列分组计算Arrival_Year的众数?

获取每个Country对应的最常见Arrival_Year

可以通过按Country分组后结合众数统计来实现,以下是几种实用方法:

方法1:分组后取众数(默认取第一个众数)

如果每个Country的最多年份唯一,或只需要第一个出现的众数,用这个方法:

import pandas as pd

# 假设你的DataFrame名为df
result = df.groupby('Country')['Arrival_Year'].agg(lambda x: x.mode().iloc[0])
# 转换为DataFrame格式(可选)
result = result.reset_index(name='Most_Common_Arrival_Year')

mode()会返回当前分组里出现频次最高的年份,iloc[0]用于提取第一个结果(避免多个众数时返回Series)。

方法2:分组统计频次后取最高值

先对每个分组的Arrival_Year统计频次,再取频次最高的年份:

result = df.groupby('Country')['Arrival_Year'].apply(lambda x: x.value_counts().idxmax())
result = result.reset_index(name='Most_Common_Arrival_Year')

value_counts()会按频次降序排列,idxmax()直接返回频次最高的年份值。

处理多个众数的情况

如果某个Country存在多个年份出现次数相同(即多个众数),可以返回所有众数:

result_multi = df.groupby('Country')['Arrival_Year'].agg(lambda x: x.mode().tolist())
result_multi = result_multi.reset_index(name='Most_Common_Arrival_Years')

返回结果会是每个Country对应的众数列表。

为什么单独用value_counts无效?

单独调用df['Arrival_Year'].value_counts()是对整个数据集的年份统计,没有按Country分组,所以无法得到每个国家对应的结果,必须结合groupby实现分组统计。

内容的提问来源于stack exchange,提问作者user20705698

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:46:18