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

使用pandas分组计算患者治疗前后各指标的差值方法

实现方法

你可以通过透视表重塑数据后直接计算差值,效率更高,实现代码如下:

import pandas as pd

# 原始数据构造
df = pd.DataFrame({'patient_id': ['p1', 'p2', 'p3', 'p1', 'p2', 'p3'],
              'treatment_time': ['pre', 'pre', 'pre', 'post', 'post', 'post'],
              'val1': [1, 4, 9, 2, 6, 10],
              'val2': [3, 5, 11, 1, 4, 9],
              'val3': [2, 4, 6, 3, 5, 7],
              })

# 核心逻辑:先按患者id、治疗阶段透视,再用治疗后数值减治疗前数值
df_pivot = df.pivot(index='patient_id', columns='treatment_time', values=['val1', 'val2', 'val3'])
res = (df_pivot['post'] - df_pivot['pre']).reset_index()

print(res)

运行上述代码后输出的res就是你要求的格式。

如果你更习惯用分组逻辑处理,也可以用groupby实现:

res = df.groupby('patient_id')[['val1', 'val2', 'val3']].apply(
    lambda x: x.loc[df['treatment_time'] == 'post'].values[0] - x.loc[df['treatment_time'] == 'pre'].values[0]
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:24:07