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

如何在Python/Pandas中按列匹配条件计算行间Volume差值

按分组计算DataFrame中交易量的差值

要实现仅对Name列匹配的行计算Volume列的差值,核心思路是先按Name分组,再在组内计算差值,具体步骤如下:

1. 构造输入DataFrame

import pandas as pd

data = {
    'Date': ['2011-01-03'] * 9,
    'Name': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
    'Volume': [10, 20, 30, 40, 30, 100, 140, 50, 120]
}
df = pd.DataFrame(data, index=range(1, 10))

2. 分组计算差值

通过groupby锁定相同Name的行,用diff()计算组内差值,再将每组第一行的缺失值替换为该行的Volume值:

# 计算组内差值并填充缺失值
df['Volume Diff'] = df.groupby('Name')['Volume'].diff().fillna(df['Volume'])
# 转为整数类型(匹配示例输出格式)
df['Volume Diff'] = df['Volume Diff'].astype(int)

3. 最终输出

运行后得到的DataFrame如下:

Date Name  Volume  Volume Diff
1  2011-01-03    A      10           10
2  2011-01-03    B      20           20
3  2011-01-03    C      30           30
4  2011-01-03    A      40           30
5  2011-01-03    B      30           10
6  2011-01-03    C     100           70
7  2011-01-03    A     140          100
8  2011-01-03    B      50           20
9  2011-01-03    C     120           20

关键逻辑说明

  • groupby('Name'):确保差值计算仅在相同名称的行组内进行,不会跨名称计算
  • diff():计算当前行与组内上一行的Volume差值,每组第一行因无前置行返回NaN
  • fillna(df['Volume']):将每组第一行的缺失值替换为该行自身的Volume,符合示例结果要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:55:18