我有两个数据帧,大约有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映射到凹陷总和的序列,然后将这些总和映射到df1中的ID并从凹陷中减去
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
元素的缘故,我一直在努力
非常感谢您的帮助
你能做到吗
你也可以用这两种方法:
一个接一个
或者构建列,将它们与sub一起放置。您可以在columns=中使用['col1','col2'],但在此处使用列名,而不是col1,col2:
我希望其中一个能帮上忙
相关问题 更多 >
编程相关推荐