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

如何聚合多记录数据集并创建votecount、party loyalty新变量?

解决方案:聚合投票数据集

代码实现(Python Pandas)

import pandas as pd

# 构造原始数据集(实际使用时可替换为读取本地文件/数据库)
data = {
    '姓名': ['John', 'John', 'John', 'John', 'John', 'John', 'Tim', 'Tim', 'Tim', 'Tim'],
    '会话': [114, 114, 114, 115, 116, 116, 114, 115, 115, 116],
    '个人投票': ['yea', 'yea', 'nay', 'yea', 'yea', 'yea', 'nay', 'nay', 'nay', 'yea'],
    '政党投票': ['nay', 'yea', 'nay', 'yea', 'nay', 'yea', 'yea', 'yea', 'nay', 'nay'],
    '与政党投票一致?': ['no', 'yes', 'yes', 'yes', 'no', 'yes', 'no', 'no', 'yes', 'no']
}

df = pd.DataFrame(data)

# 按「姓名」和「会话」分组,计算聚合指标
aggregated_df = df.groupby(['姓名', '会话']).agg(
    votecount=('与政党投票一致?', 'count'),  # 统计每组投票总数
    # 计算政党忠诚度:一致的投票数/总投票数,保留两位小数
    party_loyalty=('与政党投票一致?', lambda x: round(sum(x == 'yes') / len(x), 2))
).reset_index()

# 重命名列以匹配目标格式
aggregated_df = aggregated_df.rename(columns={'party_loyalty': 'party loyalty'})

print(aggregated_df)

输出结果

姓名会话votecountparty loyalty
John11430.67
John11511.00
John11620.50
Tim11410.00
Tim11520.50
Tim11610.00

关键步骤说明

  • 分组:通过groupby(['姓名', '会话'])将数据按参与者和会话维度拆分
  • 投票总数:用count方法直接统计每组的记录条数,得到votecount
  • 政党忠诚度:通过lambda函数计算每组中"与政党投票一致?"为yes的比例,用round保留两位小数
  • 重置索引:reset_index()将分组后的索引转换为普通列,确保结果格式符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:33:18