代码
为了提取以""-""开头的列,将这些列的值乘以-1,然后按列轴进行分组。
cols = df.columns[df.columns.str.startswith('-')]
df[cols] = df[cols].mul(-1)
grp = df.columns.str.replace('[+-]', '', regex=True)
out = df.groupby(grp, axis=1, sort=False).sum()
输出结果
RepID Col01 Col02 Col03 Col04 Col05 Col06 Col07
0 1 -3 7 8 -6 8 4 -6
1 2 -2 3 1 -2 2 6 0
2 3 0 8 -5 3 9 2 0
3 4 -2 1 -1 8 7 9 -2
4 5 -2 7 -1 -9 0 2 -1
示例代码
import pandas as pd
data1 = {'RepID': [1, 2, 3, 4, 5], '+Col01': [5, 1, 9, 3, 0], '+Col02': [7, 3, 8, 1, 7],
'+Col03': [9, 3, 0, 0, 1], '-Col01': [8, 3, 9, 5, 2], '+Col04': [3, 1, 4, 8, 0],
'+Col05': [8, 2, 9, 7, 0], '-Col03': [1, 2, 5, 1, 2], '-Col04': [9, 3, 1, 0, 9],
'+Col06': [4, 6, 2, 9, 2], '-Col07': [6, 0, 0, 2, 1]}
df = pd.DataFrame(data1)