如何按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计算相邻行的差值,每组第一行因无前置数据会生成NaNfillna(0):把每组第一行的NaN替换为0,匹配需求中的输出规则round(2):将差值保留两位小数,和示例结果的格式对齐
内容的提问来源于stack exchange,提问作者Khaled DELLAL
相关产品推荐
相关产品推荐

