基于Pandas按州与党派排序数据集并计算投票率平均值
用Pandas计算各州党派平均得票率的实现方案
核心思路
不用手动遍历数据集,利用Pandas的数据重塑+分组聚合功能就能高效完成需求,步骤如下:
具体步骤(附代码)
假设你的原始DataFrame结构为:州列是州名,DEM和REP列对应各党派得票率数值(如果原始数据是带%的字符串,需要先转成数值:df['DEM'] = df['DEM'].str.replace('%', '').astype(float),REP列同理)
- 将宽表转为窄表
把DEM、REP列转为党派列,统一结构方便后续分组:
import pandas as pd # 假设原始数据框名为df melted_df = df.melt(id_vars='州', var_name='党派', value_name='得票率')
- 按州+党派分组求平均
用groupby自动聚合计算每组的平均值:
avg_result = melted_df.groupby(['州', '党派'])['得票率'].mean().reset_index()
- 格式化输出为指定样式
将结果按要求的格式打印或保存:
for _, row in avg_result.iterrows(): # 若需整数百分比用int(row['得票率']),保留一位小数则用row['得票率']:.1f print(f"{row['州']} | {row['党派']} | {int(row['得票率'])}%")
输出示例
运行后会得到:
新罕布什尔州 | DEM | 55%
新罕布什尔州 | REP | 45%
缅因州 | DEM | 45%
缅因州 | REP | 54%
优势说明
这种方法完全利用Pandas的内置优化操作,比手动遍历效率高几十倍,尤其是当数据集行数较多时,性能差距会更明显。
内容的提问来源于stack exchange,提问作者lordcarrot
相关产品推荐
相关产品推荐

