【发布时间】:2023-01-16 22:15:04
【问题描述】:
我想找到 Pandas groupby 数据框中值之间的差异,但对于特定的列值。我已经阅读了多篇关于使用 diff 命令的文章,但无论分组如何,这都适用于后续行。
在下面的数据框中(它是一个字典),数据框包含用户 ID trial_id 的列、条件 placebovstreatment、主持人变量 expbin 和一个值。
我想计算用户内部值之间的差异,但前提是他们具有某些条件类别的值。
例如,用户 1 的值为
correct_placebo_baseline 10.000
correct_treatment 21.000
差值是 11。
用户 2 的值为
0 22.000
correct_placebo_baseline 8.688
差异大约为 14。
用户 1 在列类别 correct_placebo_baseline 和 correct_treatment 之间存在差异。用户 2 在 correct_placebo_baseline 和类别“0”之间存在差异。
仅当用户同时具有 correct_placebo_baseline 和 'correct_treatment' 分组时,我该如何计算?或者,您如何创建列,其中每个用户每个组的差异是特定的?
该公式可以为每个 trial_id 创建列 difference from baseline for correct placebo 和“与基线的差异为 0”。
挑战在于一些用户没有基准分数。一些用户有一个基线分数,但没有别的。仅当它们同时具有两者时,我才需要差异值。
我试图找到一种方法来在 groupby 类别满足特定条件时运行函数,但没有成功。
感谢您的帮助,如果我能让这个问题更容易回答,请告诉我。
{'trial_id': {0: 1, 1: 1, 2: 1, 3: 2, 4: 2, 5: 3, 6: 3, 7: 4, 8: 4, 9: 5},
'placebovstreatment': {0: '0',
1: 'correct_placebo_baseline',
2: 'correct_treatment',
3: '0',
4: 'correct_placebo_baseline',
5: 'correct_placebo_baseline',
6: 'incorrect_placebo',
7: 'correct_placebo_baseline',
8: 'incorrect_placebo',
9: '0'},
'expbin': {0: 1, 1: 1, 2: 1, 3: 2, 4: 2, 5: 2, 6: 2, 7: 1, 8: 1, 9: 1},
'value': {0: 31.5,
1: 10.0,
2: 21.0,
3: 22.0,
4: 8.688,
5: 20.0,
6: 37.5,
7: 12.0,
8: 32.5,
9: 10.0}}
【问题讨论】:
-
为了清楚起见,您能否提供预期的输出?