通过遍历行来创建新的循环因变量

时间:2019-01-09 01:14:53

标签: python pandas sas

我正在将这段sas代码翻译成熊猫。 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

我一直在考虑先获取组密钥并遍历这些组名称。但是也许有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

假设您有一个DataFrame df,其中包含保存值的列BC,以及列{拥有群组名称的{1}}:

key1

由于pd.iterrows(),无法并行解决此问题,这由您使用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 以及我对变量[i - 1]和{{ 1}}。