python - 如何有效地实施这种差异操作?
问题描述
我想从现有的数据框构建一个数据框,其中每行的每个值都取决于前一个。我有一个初始值v0
作为起点。让我举个例子
In [126]:import pandas as pd
In [127]: df = pd.DataFrame([1.0, 1.1, 1.2, 1.3])
In [128]: df_result = df.copy()
In [129]: v0 = 10
In [130]: for i in range(1, len(df.index)):
...: df_result.iloc[i, 0] = df.iloc[i, 0]*df_result.iloc[i-1, 0]
...:
In [131]: df_result
Out[131]:
0
0 1.000
1 1.100
2 1.320
3 1.716
在 [132] 中:
我的问题是关于 for 循环。我怎样才能更有效地写这个?
解决方案
我相信需要先numpy.insert
值v0
到第一个位置,然后调用numpy.cumprod
:
df = pd.DataFrame([1.0, 1.1, 1.2, 1.3], columns=['r'])
v0 = 10
df['n'] = np.cumprod(np.insert(df['r'].values[1:], 0, v0))
print (df)
r n
0 1.0 10.00
1 1.1 11.00
2 1.2 13.20
3 1.3 17.16
推荐阅读
- javascript - 为什么当我用 JavaScript 嵌入 PHP 时,我的 PHP 没有激活?
- python - Python 正则表达式:使用 re.sub 在字符串中添加“-”
- python-2.7 - 未收集使用 PyInstaller 打包的 Pytest 测试
- spring-boot - 无法在springboot中使用户具有不同的角色
- php - 我想显示数据库中的所有图像,但我只能显示一个
- wcf - 如何在 UWP 中通过代码隐藏引用 WCF 服务?
- python - 如何将多个 imshow() 结果放在一个图中?
- java - 通过 jdom 创建带有命名空间的 xml 文件时出现 DomException
- php - 如何在 PHP 中更新作曲家
- python - 提交表单时,Django自动为外键赋值?