好吧,我很困惑,已经浏览了所有可用的页面,然后全部浏览,仍然很麻烦!
这是我的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)但是在熊猫中,我只是在写一个更深的洞,请帮忙!
screen shot of df, may be a better view
答案 0 :(得分:1)
.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_numeric
之前进行总计,则为字符串的总和。如果您在pd.to_numeric
之后进行总计,则为整数的总和。
创建DF之后。试试:
df['Totals'] = df.sum(axis=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