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

如何简化Pandas按国家分组批量计算多列Score差分的代码

方案1:分组后批量计算多列差分(最推荐)

直接对分组后的所有目标Score列一次性调用diff方法,不用逐列或循环处理,代码简洁且是pandas原生向量化实现,效率更高:

import pandas as pd

# 1. 先按国家、年份升序排序,确保差分逻辑是「后一年减前一年」,避免数据顺序混乱导致结果错误
df = df.sort_values(['Country', 'Year'], ascending=[True, True]).reset_index(drop=True)

# 2. 筛选所有需要计算差分的Score列,也可以手动指定列表:score_cols = ['Score1','Score2','Score3','Score4']
score_cols = [col for col in df.columns if col.startswith('Score')]

# 3. 批量计算差分并赋值到原df,diffN对应ScoreN的差分结果
df[[f'diff{i+1}' for i in range(len(score_cols))]] = df.groupby('Country')[score_cols].diff()

方案2:循环实现

如果更偏好循环写法,也可以用以下代码替代逐行手写逻辑:

df = df.sort_values(['Country', 'Year'], ascending=[True, True]).reset_index(drop=True)
for col_num in range(1, 5):
    df[f'diff{col_num}'] = df.groupby('Country')[f'Score{col_num}'].diff()

两种方案都能实现和你原逐列代码完全一致的效果,无需手动为每一列编写计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:06