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

如何按DataFrame中col1分组计算col2的差值列?

问题描述

我有如下DataFrame:

import pandas as pd
df=pd.DataFrame({
    'col1' : ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'D'],
    'col2' : [9.6,10.4, 11.2, 3.3, 6, 4, 1.94, 15.44, 6.17, 8.16]
})

原始数据展示:

col1    col2
0   A   9.60
1   A   10.40
2   A   11.20
3   B   3.30
4   B   6.00
5   B   4.00
6   C   1.94
7   C   15.44
8   C   6.17
9   D   8.16

我需要按col1的分组分别计算col2的差值,得到如下结果:

col1    col2    Diff
0   A   9.60    0
1   A   10.40   0.80
2   A   11.20   0.80
3   B   3.30    0
4   B   6.00    2.70
5   B   4.00    -2.00
6   C   1.94    0
7   C   15.44   13.50
8   C   6.17    -9.27
9   D   8.16    0

之前尝试用df['col2'].diff(),但它是全局计算差值,无法按分组实现需求,求解决方法。


解决方案

用groupby先按col1分组,再对每组的col2应用diff()方法,最后把缺失值填充为0即可:

df['Diff'] = df.groupby('col1')['col2'].diff().fillna(0)
# 可选:保留两位小数,和示例输出格式一致
df['Diff'] = df['Diff'].round(2)

关键步骤说明

  • groupby('col1'):将数据按col1的不同类别拆分,每个分组独立处理
  • ['col2'].diff():对每组内的col2计算相邻行的差值,每组第一行因无前置数据会生成NaN
  • fillna(0):把每组第一行的NaN替换为0,匹配需求中的输出规则
  • round(2):将差值保留两位小数,和示例结果的格式对齐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:30:47