在 Python 中合并 DataFrame 列

问题描述 投票:0回答:1

我有一个特殊的数据框,称为 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

我能做到吗

python pandas dataframe
1个回答
0
投票

代码

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
© www.soinside.com 2019 - 2024. All rights reserved.