python - python - 如何在 python 数据框中执行以下操作
问题描述
下面是我的df
df = pd.DataFrame({
'Sr. No': [1, 2, 3, 4, 5, 6],
'val1' : [2,3,2,4,1,2],
})
我想要输出 val2 如下图所示。row1 与 val1 的 row1 相同,但 row2 及以下是使用公式计算的,如图所示
解决方案
因此,所有行都依赖于前面的行,因为 C4 取决于 C3 的计算。所以我们能做的就是直接对numpy数组进行操作。
sr_no_vals = df['Sr. No'].values
val1_vals = df['val1'].values
val2_vals = [val1_vals[0]]
for i in range(1, len(sr_no_vals)):
calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i])
val2_vals.append(calculated_value)
df['val2'] = val2_vals
在使用 numpy 数组进行操作时,我们还可以使用 numba 等即时编译器来将大数据的操作速度提高一个巨大的倍数。
@numba.jit(nopython=True)
def calc_val2(val1_vals, sr_no_vals):
val2_vals = [val1_vals[0]]
for i in range(1, len(sr_no_vals)):
calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i])
val2_vals.append(calculated_value)
return val2_vals
df['val2'] = calc_val2(val1_vals, sr_no_vals)
推荐阅读
- php - macOS Catalina 更新后 Apache 无法正常工作
- node.js - 将 Mongoose.connect 与 useUnifiedTopology 选项一起使用时,返回的 Promise 不会捕获错误
- asp.net-mvc - 如何在 cshtml 中使用服务器代码检测 IOS 版本?
- python - 如何捕获特定文件的下载次数
- task - 当我运行我的气流时,没有创建任何任务
- c# - 如何为多个泛型类型使用关键字`where`?
- jquery - 如何触发一个元素点击另一个元素
- java - 如何在没有循环键的情况下检查键名是否包含嵌套 json 对象的数字/特殊字符?
- node.js - NodeJS Mongoose 不接受 $regex 中的字符串变量
- python-3.x - 在类方法中导入会产生 NameError