【发布时间】:2022-01-12 14:22:01
【问题描述】:
这段代码给出了我想要的结果:
- 它取值 n-1 并从中计算 n
取“y”列中的前一个值,将其称为 y-1 并计算一个成为新 y 的值,然后在下一行中将新的 y 作为 y-1 并计算另一个新的 y
size = 10
x= range(1,size+1)
df = pd.DataFrame(data={'x': x,'y': size })
for n in range(1,len(x)):
df['y'].iloc[n] = df['y'].iloc[n-1]*2
out:
x y
0 1 10
1 2 20
2 3 40
... ... ...
9 10 5120
我想把它放到一个 lambda 中,但不知怎么弄错了:
b=2
df['y'].loc[1::] = df['y'].shift(-1).apply(lambda x: x*b)
out:
x y
0 1 10.0
1 2 20.0
2 3 20.0
... ... ...
lambda 函数采用每行中的预填充值 (10),而不是向后移动 1 步并将前一个值作为乘法的基数
我查看了一些线程,但它超出了我的理解,如果我在这里处理递归并且这对于 lambdas 是不可能的?
recursive lambda-expressions possible?
Can a lambda function call itself recursively in Python?
编辑: 我希望“y”中的后续条目与之前的“y”条目一起计算,从 idx 1 开始
DataFrame at start:
idx | y |
0 10
DataFrame after 1st calc:
y1 = y0 *2
# *2 is a placeholder could be mx+b, or something else
idx | y |
0 10
1 20
【问题讨论】:
-
您能描述一下您要做什么吗?
标签: python pandas lambda apply