gpt4 book ai didi

python pandas 在迭代期间更新与先前更新的行相关的列值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:12 24 4
gpt4 key购买 nike

如何使我的代码更好,因为我确信必须有更简洁的解决方案。我试图用 pandas apply 解决它(但它不使用更新的值但将旧值保留在内存中)。我应该使用某种函数返回生成器对象吗? 迭代行?也许我可以用 cumsumcumprod 以某种方式解决它?

import pandas as pd


df = pd.DataFrame(data={'val':[0, 0.2, 0.1, 0.5, -0.6]})

prev = 100
val = []

for i in df['val'].tolist():
prev = prev * i + prev
val.append(prev)

df['val'] = val

我想根据等式更新列值:

n = given value e.g. 100
v0 = 0, v1 = 0.2 etc.
y0 = n * v0 + n
y1 = y0 * v1 + y0
y2 = y1 * v2 + y1
etc.

最佳答案

您可以使用:

df['val'] = 100 * (df['val'] + 1).cumprod()

之所以可行,是因为您的表达式可以重写:

for i in df['val'].tolist():
prev *= (i + 1)

关于python pandas 在迭代期间更新与先前更新的行相关的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53708308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com