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

基于Pandas Groupby统计各masterid的价格变更次数

Pandas按masterid统计价格变更次数

可以通过分组后比较相邻价格实现需求,核心是结合groupby与shift、ne方法,具体步骤如下:

完整实现代码

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'masterid': [1001, 1001, 1001, 1001, 1002, 1003, 1003, 1003, 1004, 1004],
    'price': [12, 12, 11, 14, 15, 10, 10, 10, 16, 17]
})

# 分组统计价格变更次数
result = df.groupby('masterid')['price'].apply(
    lambda x: x.ne(x.shift()).sum() - 1  # 减去第一行的无效计数
).reset_index(name='price')

print(result)

代码说明

  • x.ne(x.shift()):在每个masterid分组内,将当前行价格与上一行比较,价格不同返回True(计为1),相同返回False(计为0)
  • .sum() - 1:统计组内差异次数时,每组第一行的shift()结果为NaN,ne会误判为True,因此减1排除这个无效计数
  • reset_index(name='price'):将分组后的索引转为列,并把统计结果列重命名为price

执行后输出:

masterid  price
0      1001      2
1      1002      0
2      1003      0
3      1004      1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:01:04