除一只外,所有的熊猫行总和


问题内容

我在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

对于每个表,数字和列的名称都会发生变化(我在python的循环中创建了它们)。

我想为每个表返回另一列称为sum的列,其中包含除gid之外的每个calumn的总和。我们的目标是:

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

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

pythonpandasnumpy)或psql


问题答案:

使用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

如果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