我有
df = pd.DataFrame.from_dict({'id': ['A', 'B', 'A', 'C', 'D', 'B', 'C'], 'val': [1,2,-3,1,5,6,-2], 'stuff':['12','23232','13','1234','3235','3236','732323']})
id stuff val
0 A 12 1
1 B 23232 2
2 A 13 -3
3 C 1234 1
4 D 3235 5
5 B 3236 6
6 C 732323 -2
我想val
为每个运行一些id
,所以所需的输出如下所示:
id stuff val cumsum
0 A 12 1 1
1 B 23232 2 2
2 A 13 -3 -2
3 C 1234 1 1
4 D 3235 5 5
5 B 3236 6 8
6 C 732323 -2 -1
这是我尝试的:
df['cumsum'] = df.groupby('id').cumsum(['val'])
和
df['cumsum'] = df.groupby('id').cumsum(['val'])
这是我得到的错误:
ValueError: Wrong number of items passed 0, placement implies 1
您可以调用transform
并传递cumsum
函数以将该列添加到df中:
In [156]:
df['cumsum'] = df.groupby('id')['val'].transform(pd.Series.cumsum)
df
Out[156]:
id stuff val cumsum
0 A 12 1 1
1 B 23232 2 2
2 A 13 -3 -2
3 C 1234 1 1
4 D 3235 5 5
5 B 3236 6 8
6 C 732323 -2 -1
关于错误,您无法调用cumsum
Series groupby对象,其次,您将列名作为无意义的列表传递。
所以这有效:
In [159]:
df.groupby('id')['val'].cumsum()
Out[159]:
0 1
1 2
2 -2
3 1
4 5
5 8
6 -1
dtype: int64
问题内容: 这是代码段: 输出: 我很惊讶0不在(0,30]中,我应该怎么做才能将0归类为(0,30]? 问题答案: test[‘range’] = pd.cut(test.days, [0,30,60], include_lowest=True) print (test) days range 0 0 (-0.001, 30.0] 1 31 (30.0, 60.0] 2 45 (30.0, 60
问题内容: 我是python的新手。这似乎是一个基本问题。但我真的很想了解这里发生了什么 索引每个数据帧中的第一个元素 疑问1:为什么会这样?为什么myseries_three [0]给我一个keyError?调用myseries_one [0],myseries_one [0]或myseries_three [0]是什么意思?以这种方式调用是否意味着我们以行名进行调用? 疑问2:-Python中
我将express与socket.io一起使用,将express-session与Express-socket.io-session一起使用,这有助于将会话连接到我的套接字实例。 Deploy函数运行诸如会话、路由等内容。 POST http://localhost:8080/socket.io/?eio=3&transport=polling&t=lz9ey8p 404(未找到)
问题内容: —我构建了一个简单的应用程序,该应用程序从Redis数据库中提取数据(50个项目)并将其扔到localhost。我做了一个ApacheBench(c = 100,n = 50000),并且在1.73GHz(我的6岁笔记本电脑)的双核T2080上获得了半不错的150个请求/秒,但是proc的使用非常令人失望显示: 仅使用了一个内核,这是按照Node中的设计进行的,但是我认为,如果我可以使
问题内容: 我希望在python3中以有效的方式使用该功能。我拥有的代码可以完成任务,但是速度太慢,因为我正在处理大型数据集。因此,只要有折衷,我的工作重点就是效率而不是优雅。这是我想做的玩具: 这使 如我所愿,但是花费的时间太长了。最快的方法是什么? 编辑:这是比该问题更集中和明确的问题,其解决方案与此类似。 问题答案: 用于执行查找: 为了避免没有有效密钥的情况,您可以通过 您还可以使用回答有
现在,每次运行脚本时,我都会导入一个相当大的作为数据帧。有没有一个好的解决方案可以让数据帧在运行之间不断可用,这样我就不用花那么多时间等待脚本运行了?