我有一个特殊的数据框,称为 df
这是它的样子
RepID +Col01 +Col02 +Col03 -Col01 +Col04 +Col05 -Col03 -Col04 +Col06 -Col07
1 5 7 9 8 3 8 1 9 4 6
2 1 3 3 3 1 2 2 3 6 0
3 9 8 0 9 4 9 5 1 2 0
4 3 1 0 5 8 7 1 0 9 2
5 0 7 1 2 0 0 2 9 2 1
数据中都是正数
但是如果您注意到列名称,它是带有 + 或带有 -
的列名称其中一些列有 +,但没有带 - 的列(例如 +Col06)
其中一些列有 - 而没有带 + 的列(例如 -Col07)
其他一些两者都有(例如+Col01和-Col01)
我想通过从 + 列中减去 - 列中的值来使该数据集标准化,并将列名称更改为名称开头没有 + 或 - 的名称,因此结束表将如下所示
RepID Col01 Col02 Col03 Col04 Col05 Col06 Col07
1 -3 7 8 -6 8 4 -6
2 -2 3 1 -2 2 6 -0
3 0 8 -5 3 9 2 0
4 -2 1 -1 8 7 9 -2
5 -2 7 -1 -9 0 2 -1
我能做到吗
代码
cols = df.filter(like='-').columns
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