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

如何用Pandas计算各国家-年度单位的每起袭击致死人数中位数?

计算国家-年度维度下恐怖袭击致死人数中位数的解决方案

你可以直接用groupby的agg()方法,一次性完成求和与中位数计算,不用分开处理。修改后的代码如下:

# 按国家-年份分组,同时计算所需的聚合指标
df2 = df1.groupby(['country', 'iyear']).agg(
    totalnkill=('nkill', 'sum'),
    NumbAttackperYear=('NumbAttack', 'sum'),
    MedKillperAttack=('nkill', 'median')
).reset_index()

代码解释:

  • groupby(['country', 'iyear']):指定按country(国家)和iyear(年份)两个字段分组,确保聚合逻辑严格落在国家-年度维度上。
  • agg():聚合方法,支持同时对不同列应用不同的聚合规则,格式为新列名=(原列名, 聚合函数):
    • totalnkill=('nkill', 'sum'):对nkill列求和,得到该国家该年度的总致死人数,存入totalnkill列。
    • NumbAttackperYear=('NumbAttack', 'sum'):对NumbAttack列求和,得到该国家该年度的总袭击次数,存入NumbAttackperYear列。
    • MedKillperAttack=('nkill', 'median'):对nkill列计算中位数,得到该国家该年度每起袭击的致死人数中位数,存入MedKillperAttack列。
  • reset_index():把分组用的country和iyear从索引转为普通列,让df2的结构完全匹配你的需求(包含country、iyear、totalnkill、NumbAttackperYear、MedKillperAttack列)。

补充说明:

如果nkill列存在缺失值(比如NaN),默认计算中位数时会自动跳过缺失值;若需要显式声明,可写成('nkill', lambda x: x.median(skipna=True))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:50:29