pandas 生成一列是另一列的累加结果,怎么做

2016-09-15 09:42:58 +08:00
 sylvos
请前辈指点下
比如a=[1.2.3.4]
生成的要[1.3.6.10]
11206 次点击
所在节点    Python
11 条回复
GavinFlying
2016-09-15 10:07:15 +08:00
如果是 Pandas :

```python
num_list = [1, 2, 3, 4]
df = pd.DataFrame(data=num_list)
df.cumsum()
```

如果不用 Pandas:

```python
num_list = [1, 2, 3, 4]
[sum(num_list[:idx]) for idx in range(1, len(num_list) + 1)]
```
sylvos
2016-09-15 10:10:12 +08:00
谢谢,前辈,第一个是我想要的,非常感谢啊,我原来还想 reduce 什么的
sylvos
2016-09-15 10:11:09 +08:00
@GavinFlying
谢谢,第一个是我想要的,非常感谢啊,我原来还想 reduce 什么的
sylvos
2016-09-15 10:24:00 +08:00
@GavinFlying 可以再问你个 pandas 问题吗?生成累加列,因为之前 groupby 过,如何还原回去。就是要与 groupby 之前的数据结构一致
sylvos
2016-09-15 10:32:35 +08:00
@GavinFlying 我想到的笨办法是把 groupby 的结果用 pd.concat 接合起来
GavinFlying
2016-09-15 10:36:15 +08:00
@sylvos Sorry, 并不懂...感觉应该要自己实现
dgkae
2016-09-15 11:08:39 +08:00
厉害哦
imn1
2016-09-15 12:35:09 +08:00
这些类似的逐行计算的,属于移动统计范畴,你需要看 pandas 手册, computational tools 这一章
mfinal
2016-09-15 13:08:00 +08:00
@sylvos groupby 一般是不可逆的,不确定你想变回原来什么样子,因为原 df 是不受影响的,可能你需要试试 reset_index ,在 stackoverflow 上都有
sylvos
2016-09-15 15:50:48 +08:00
@mfinal 因为我需要把前面得到的累加列更新到原 df 里面,但又只能单 group 做累加。
sylvos
2016-09-15 15:51:09 +08:00
@imn1 谢谢你

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/306391

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX