如何在Pandas中按分组聚合众数生成新数据表
按国家分组聚合Pandas DataFrame的众数
解决步骤
- 构造示例DataFrame(匹配你提供的原始数据)
import pandas as pd data = { 'country': ['india', 'india', 'india', 'india', 'india', 'india', 'pakistan', 'Pakistan', 'pakistan', 'srilanka', 'srilanka', 'srilanka', 'srilanka', 'srilanka', 'srilanka'], 'scores': [11, 12, 12, 12, 10, 12, 10, 14, 14, 23, 21, 21, 23, 23, 23], 'attempts': [6, 3, 3, 7, 3, 3, 4, 4, 5, 5, 5, 6, 5, 6, 5] } df = pd.DataFrame(data)
- 统一国家名称的大小写
原始数据中country列存在大小写不一致的情况(如pakistan和Pakistan),会导致分组错误,先统一格式:
df['country'] = df['country'].str.title()
- 按国家分组并聚合众数
通过groupby分组后,用自定义聚合函数提取每列的众数(mode()返回众数序列,这里每组众数唯一,直接取第一个元素即可):
result_df = df.groupby('country', as_index=False).agg(lambda x: x.mode()[0])
输出结果
执行上述代码后,打印result_df会得到期望的结果:
print(result_df)
输出:
country scores attempts 0 India 12 3 1 Pakistan 14 4 2 Srilanka 23 5
内容的提问来源于stack exchange,提问作者pamanji jagadesh
相关产品推荐
相关产品推荐

