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

使用Pandas分析CSV:获取各问题的最频繁回答

按问题分组获取众数并生成CSV的解决方法

问题描述

我的数据结构为每个问题重复6次,CSV示例如下:

Question,Person,Answer
Q_1,p1,3
Q_1,p1,3
Q_1,p1,3
Q_1,p1,3
Q_1,p1,3
Q_1,p1,3
Q_2,p1,1
Q_2,p1,1
Q_2,p1,1
Q_2,p1,1
Q_2,p1,1
Q_2,p1,1
Q_3,p1,1
Q_3,p1,1
Q_3,p1,3
Q_3,p1,1
Q_3,p1,2
Q_3,p1,2

我需要获取每个问题的最频繁回答(众数),并生成仅包含该内容的新CSV文件。但直接使用df.mode()时,只能得到整个Answer列的单一值,请问如何按每个问题分别获取对应的众数?

解决方法

核心是通过**分组(groupby)**结合mode()方法,针对每个问题单独计算众数,具体步骤如下:

  1. 读取原始CSV数据
  2. 按Question列分组,对每组的Answer列计算众数
  3. 处理可能的多众数情况(若某问题存在多个出现次数相同的答案)
  4. 将结果导出为新的CSV文件

代码实现(基于Pandas)

import pandas as pd

# 读取输入CSV文件
df = pd.read_csv('input.csv')

# 按Question分组,计算每组Answer的众数
# reset_index()将分组索引转为普通列
mode_result = df.groupby('Question')['Answer'].agg(pd.Series.mode).reset_index()

# 处理多众数场景:若某问题有多个众数,取第一个结果
mode_result['Answer'] = mode_result['Answer'].apply(
    lambda x: x[0] if isinstance(x, pd.Series) else x
)

# 导出结果到新CSV
mode_result.to_csv('question_modes.csv', index=False)

输出结果

运行上述代码后,生成的question_modes.csv内容如下:

Question,Answer
Q_1,3
Q_2,1
Q_3,1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:55:46