Python DF:将转换为字符串的数字行求和到新列中

Python DF:将转换为字符串的数字行求和到新列中,python,pandas,Python,Pandas,好吧,我被难住了,已经浏览了所有可用的页面,关注了所有的内容,但仍然唉! 这是我的df。我想把第4行中的所有值加在一起,在末尾有一个行总数,然后对5,6,7进行计算。。。我使用.concat()和.sum()并获得关键错误或太多参数,尝试了.groupby,甚至.add()(值得一试)因为列是“列表”,所以没有给出总数 1day 2day 3day 4day 5day 6day 7day 4 2.979 2.979 2.9

好吧,我被难住了,已经浏览了所有可用的页面,关注了所有的内容,但仍然唉! 这是我的df。我想把第4行中的所有值加在一起,在末尾有一个行总数,然后对5,6,7进行计算。。。我使用
.concat()
.sum()
并获得关键错误或太多参数,尝试了
.groupby
,甚至
.add()
(值得一试)因为列是“列表”,所以没有给出总数

     1day     2day     3day     4day     5day     6day     7day
4   2.979    2.979    2.979    2.979    2.979    2.979    2.979
5   9.543    9.543    9.543    9.543    9.543    9.543    9.543
6   5.222    5.222    5.222    5.222    5.222    5.222    5.222
7   0.319    0.319    0.319    0.319    0.319    0.319    0.319
10 -4.491   -4.491   -4.491   -4.491   -4.491   -4.491   -4.491
14  2.178    2.178    2.178    2.178    2.178    2.178    2.178
15  7.507    7.507    7.507    7.507    7.507    7.507    7.507
16  0.612    0.612    0.612    0.612    0.612    0.612    0.612
17  4.488    4.488    4.488    4.488    4.488    4.488    4.488
我在
df.groupby(df.index)[1day',2day'…'7day'].sum()方面有点运气,但它只是将它们推到一起,而不是将它们相加。(我知道所有的值都是相等的)
在excel中,sum(a1:g1)但在pandas中,我只是在写一个更深的洞,请帮助!

.sum()
应用于字符串的DF 在不改变原始问答的情况下,以下是您修改后问题的更新答案:

问题是,您需要将字符串转换为整数。这只是使其成为一个两步过程。我将显示所有步骤,以便清楚:

In [83]: str_lst =[[ '7',  '3',  '2', '-1',  '5',  '8',  '0'],
                [ '6',  '8',  '4',  '0',  '8',  '7',  '6'],
                [ '6',  '1',  '2',  '8',  '6', '-1',  '2'],
                [ '0', '-1',  '3',  '5',  '1',  '3',  '7'],
                [ '6',  '5',  '2',  '8',  '4',  '2',  '3'],
                [ '4', '-1', '-1',  '3',  '2',  '3', '-1'],
                [ '8',  '6',  '6',  '0',  '8',  '0',  '0'],
                ['-1',  '3',  '3',  '0',  '4',  '2',  '4'],
                [ '2',  '1',  '2',  '7',  '0',  '8',  '5'],
                [ '3',  '8',  '1',  '0',  '8',  '1',  '8']]

In [85]: df = pd.DataFrame(str_lst, columns=['1day', '2day', 
                  '3day', '4day', '5day', '6day', '7day'])

In [93]: df = df.apply(pd.to_numeric)

In [94]: df['Totals'] = df.sum(axis =1)
如果在
pd.to\u numeric
之前进行合计,则是字符串的总和。如果在
pd.to\u numeric
之后进行合计,则是整数的总和

原始响应 创建DF后,请尝试:

df['Totals'] = df.sum(axis=1)

这将在最右边添加一列,并包含行的总和。

例子
df.sum(axis=1)
?df['sum']=df['1day','2day','3day','4day','5day','6day','7day']的可能重复。sum(axis=1)在['1day','2day'…]上返回keyrerror,这是索引错误的。按字面意思就是执行
df.sum(axis=1)
。或者添加一个额外的括号,所以
df['1day','2day','3day','4day','5day','6day','7day']
只需将字符串按在一起。9.34 9.34 9.34变为9.349.349.349.34我对此投了反对票,因为A)这是一个明显的重复,B)你刚刚从评论中复制了一个答案。你在评论中发布时,我正在起草回复,所以没有看到你的笔记。OP要求“我想将第4行中的所有值加在一起,并在末尾有一个行总数”,如果没有
df['Totals',则
df.sum()
assignment.@user3483203,如果你想发布你的答案-我很乐意删除这一条…比尔,你很有钱,因为我已经用尽了所有人的帖子,试过了,但没有运气。你的例子很好,但数据是str格式的,和.sum(axis=1)似乎只是将它们按在一起。感谢您的帮助。由于重复,我没有作为答案发布,但通过您的编辑,此答案是相关的,并且是正确的。我的-1已更改为+1
In [63]: df = pd.DataFrame(np.random.randint(-1,9,size=(10, 7)),
             columns=['1day', '2day', '3day', '4day', 
                      '5day', '6day', '7day'])

In [64]: df
Out[64]: 
   1day  2day  3day  4day  5day  6day  7day
0     0     0     7    -1     2     2    -1
1     0     3     3     2    -1     3     6
2     0     8     0    -1     8    -1     1
3     3     8    -1     2     6     3     8
4     5     0     1     8     8    -1     3
5     7     8     1     4     8     1     8
6     5     7     5    -1     7    -1     1
7     6     3     2     2     8     1     5
8     3     7     3     3     3    -1     1
9     2    -1     8     1     1     0     5

In [65]: df['Totals'] = df.sum(axis=1)

In [66]: df
Out[66]: 
   1day  2day  3day  4day  5day  6day  7day  Totals
0     0     0     7    -1     2     2    -1       9
1     0     3     3     2    -1     3     6      16
2     0     8     0    -1     8    -1     1      15
3     3     8    -1     2     6     3     8      29
4     5     0     1     8     8    -1     3      24
5     7     8     1     4     8     1     8      37
6     5     7     5    -1     7    -1     1      23
7     6     3     2     2     8     1     5      27
8     3     7     3     3     3    -1     1      19
9     2    -1     8     1     1     0     5      16