除了一个外,所有行都与熊猫相加

Glo*_* P. 5 python postgresql numpy pandas

我在PostgreSQL数据库上有几个看起来或多或少的表:

gid      col2       col1        col3
6        15         45          77
1        15         45          57
2        14         0.2         42
3        12         6           37
4        9          85          27
5        5          1           15
Run Code Online (Sandbox Code Playgroud)

对于每个表,数字和列的名称都会更改(我在python的循环中创建它们).

我想为每个表支持另一个名为sum的列,除了gid之外,每个表的总和.目标是这样的:

gid     col2       col1        col3     sum 
6        15         45          77      137
1        15         45          57      117
2        14         0.2         42      56.2
3        12         6           37      55
4        9          85          27      121 
5        5          1           15      21
Run Code Online (Sandbox Code Playgroud)

我不能使用列名:唯一没有更改的是gid.

有些想法用python(pandas,numpy)或psql

jez*_*ael 19

使用drop+ sum:

df['sum'] = df.drop('gid', axis=1).sum(axis=1)
print (df)
   gid  col2  col1  col3    sum
0    6    15  45.0    77  137.0
1    1    15  45.0    57  117.0
2    2    14   0.2    42   56.2
3    3    12   6.0    37   55.0
4    4     9  85.0    27  121.0
5    5     5   1.0    15   21.0
Run Code Online (Sandbox Code Playgroud)

如果gid始终是第一列,则先选择iloc所有列,然后选择sum它们:

df['sum'] = df.iloc[:, 1:].sum(axis=1)
print (df)
   gid  col2  col1  col3    sum
0    6    15  45.0    77  137.0
1    1    15  45.0    57  117.0
2    2    14   0.2    42   56.2
3    3    12   6.0    37   55.0
4    4     9  85.0    27  121.0
5    5     5   1.0    15   21.0
Run Code Online (Sandbox Code Playgroud)