Pandas中高效实现索引n处值为0到n项累加和的方法
用Pandas高效计算累积和(替代嵌套循环)
嗨,刚接触Pandas的话,你这个需求其实刚好能用上Pandas内置的累积求和函数,完全不用写低效的嵌套循环,一行代码就能轻松搞定!
核心方法:cumsum()
Pandas的Series.cumsum()方法就是专门用来计算从序列开头到当前位置的累积和的,完美匹配你想要的“索引n对应的price值为原DataFrame中索引0到n的price值之和”的需求。而且这个方法是Pandas底层优化过的,比Python层面的嵌套循环效率高几个数量级,尤其是数据量大的时候优势特别明显。
具体代码示例
首先构造你给出的原DataFrame:
import pandas as pd # 原DataFrame df = pd.DataFrame({'price': [1, 2, 3, 2, 4, 2]})
然后直接调用cumsum()方法更新列(或者新建列保留原数据):
# 直接更新原price列 df['price'] = df['price'].cumsum() # 如果想保留原数据,新建一个累积和列 # df['cumulative_price'] = df['price'].cumsum()
执行后得到的结果就是你期望的:
price 0 1 1 3 2 6 3 8 4 12 5 14
为什么不用嵌套循环?
嵌套循环是纯Python层面的遍历,每一步都要做Python级别的运算;而cumsum()是基于Pandas的向量化运算,底层用C实现,处理大规模数据时速度会快很多,代码也更简洁易读。
内容的提问来源于stack exchange,提问作者Axioms
相关产品推荐
相关产品推荐

