gpt4 book ai didi

python - 通过迭代行创建新的循环因变量

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:53 25 4
gpt4 key购买 nike

我正在将这段 sas 代码翻译成 pandas。 sas 代码基本上按键对观察结果进行分组。在每个组中,它都会创建一个新变量 A,其中 A[0] = B[0]/C[0]/.25。那么对于 i >= 1A[i] = A[i - 1] * .85 + B[i]/C[i]BC 是数据帧中的其他变量。

我认为没有任何df.groupby().attribute可以做到这一点。

data data;
set data2;
by key1 key2;
retain A;
if first.key1 then A = (B / C) /(.25);
else A = A * .85 + B / C;
run;

组 g01 的预期输出

key1 B C A
g01 1 2 2 2 = 1 / 2 /.25
g01 2 1 3.7 3.7 = 2 * .85 + 2 / 1
g01 2 4 3.645 3.645 = 3.7 * .85 + 2 / 4

我一直在考虑首先获取组 key 并循环这些组名称。但也许有更好的方法?

最佳答案

以下解决方案适用于 pd.iterrows() ,假设您有一个包含保存值的列 BC 的 DataFrame df 以及列 key1 保存组名称:

g = None
for i, r in df.iterrows():
if g != r.key1:
a = r.B / r.C / .25
else:
a = a * .85 + r.B / r.C
df.loc[i, 'A'] = a
g = r.key1

不可能以并行方式解决这个问题,因为 loop dependency ,这通过您对 [i - 1] 的使用以及我对变量 ag 的缓存来表明。

关于python - 通过迭代行创建新的循环因变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54101968/

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