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

如何用Pandas高效比较行子集并计算差值/百分比变化?

单行实现Pandas分组计算状态切换的value变化

可以通过pivot结合assign实现单行代码完成需求,核心思路是先将每个id对应的in_test=True和in_test=False的value转成列,再直接计算差值与百分比变化:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'id': [1, 2, 1, 2],
    'in_test': [True, True, False, False],
    'value': [5, 5, 7, 8]
})

# 单行实现计算
result = df.pivot(index='id', columns='in_test', values='value').assign(diff=lambda x: x[False]-x[True], pct_change=lambda x: (x[False]/x[True]-1)*100).reset_index()

执行后得到的结果表:

idTrueFalsediffpct_change
157240.0
258360.0

如果只需要保留id、差值和百分比变化列,可在末尾添加列筛选:

result = df.pivot(index='id', columns='in_test', values='value').assign(diff=lambda x: x[False]-x[True], pct_change=lambda x: (x[False]/x[True]-1)*100).reset_index()[['id', 'diff', 'pct_change']]

最终结果:

iddiffpct_change
1240.0
2360.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:04