首页 > 解决方案 > 遍历行

问题描述

我对如何同时使用 while 和 for 循环有点困惑。我想要达到的目标如下:

我设置 athreshold = 2并将计数器初始化n0。我试过这个逻辑:

    while n <= threshold:  # need to keep the while loop
      for x in df['Value']:  # need to keep the for loop
        # create new columns by sum      
        n=n+1 # increase the counter by 1

例如:我有

Value
1
2
3

由于n=0小于阈值 ( 2),我用总和创建一个新列:

Value Sum
1      1
2      2
3      3

我选择n = 1,所以我会有

Value Sum  Sum1
1      1     2
2      2     4
3      3     6

依此类推(在本例中,直到 n=2)。我想要的输出是

Value Sum  Sum1 Sum2
1      1     2   4
2      2     4   8
3      3     6   12

我的代码的问题是达到阈值时它不会停止。

标签: pythonpandasdataframe

解决方案


IIUC,一个简单的for loop连同sum就足够了

for i in range(threshold+1):
    df[f'Sum{i}'] = df.sum(1)

或者,您可以尝试更有效的Numpy Approach

a = df['Value'].values[:, None] * 2 ** np.r_[:threshold + 1]
df.join(pd.DataFrame(a).add_prefix('Sum'))

   Value  Sum0  Sum2  Sum3
0      1     1     2     4
1      2     2     4     8
2      3     3     6    12

推荐阅读