【发布时间】:2020-03-22 05:30:36
【问题描述】:
我有两个包含大约 300 列的数据框,其中包含干预前和干预后的分数。我需要为每个具有单个 ID 的参与者计算每列中前后的差异。作为一个小例子,我有:
Pre-intervention:
ID DEPRESSION ANXIETY COGNITION
0 001 10 2 6
1 002 15 12 -3
2 003 14 -2 6
3 004 14 1 2
Post-intervention:
ID DEPRESSION ANXIETY COGNITION
0 001 9 3 10
1 002 6 -5 2
2 003 14 8 -3
3 004 2 11 2
我正在使用下面的代码(改编自Using two dataframes to calculate final value pandas),它创建一个序列映射 ID 到 DEPRESSION 的总和,然后将这些总和映射到 df1 中的 ID 并从 DEPRESSION 中减去。
s = df1.groupby('ID')['DEPRESSION'].sum()
df2['DEPRESSION'] = df2['DEPRESSION'] - df2['ID'].map(s).fillna(0)
这给了我:
ID DEPRESSION ANXIETY COGNITION
0 001 -1 3 10
1 002 -9 -5 2
2 003 0 8 -3
3 004 -12 11 2
即凹陷列的差异。我无法弄清楚如何将其应用于我的数据框中的每一列。我曾尝试在列名上编写一个 for 循环,但由于 groupby 元素(我认为),我正在苦苦挣扎。
非常感谢任何帮助。
【问题讨论】: