Python 通过行的迭代
我对如何使用while和for循环有点困惑。 我希望达到以下目标:Python 通过行的迭代,python,pandas,dataframe,Python,Pandas,Dataframe,我对如何使用while和for循环有点困惑。 我希望达到以下目标: 设置阈值以停止进程 如果初始值低于此阈值,则对于每个数字,将同一行中的值相加 更新该值的计数器 检查更新值:如果仍低于阈值,则继续求和,直到达到阈值 我将阈值设置为2,并将计数器n初始化为0。我试过这样的逻辑: while n <= threshold: # need to keep the while loop for x in df['Value']: # need to keep the
- 设置阈值以停止进程
- 如果初始值低于此阈值,则对于每个数字,将同一行中的值相加
- 更新该值的计数器
- 检查更新值:如果仍低于阈值,则继续求和,直到达到阈值
阈值设置为2
,并将计数器n
初始化为0
。我试过这样的逻辑:
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
由于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
我的代码的问题是,当达到阈值时它不会停止。IIUC,一个简单的
for循环
和求和就足够了
for i in range(threshold+1):
df[f'Sum{i}'] = df.sum(1)
或者,您可以尝试更有效的Numpy方法
a = df['Value'].values[:, None] * 2 ** np.r_[:threshold + 1]
df.join(pd.DataFrame(a).add_prefix('Sum'))
谢谢你,Shubham。然而,我想知道,在我的代码中有什么是不起作用的。现在还不清楚为什么代码在到达目标时不停止迭代threshold@LdM很高兴我能帮忙!请您编辑您的问题,添加一些代码,以便我可以看到问题?@LdM该语句df[“Sum”]=df.iloc[:,-c_previous:]。除此之外,Sum(axis=1)
似乎不正确;增加计数器值的语句应该在for循环外,但在while循环内,我看不出在代码中更新c\u previous
值的位置。我建议您不要使用基于循环的方法,因为对数据帧的行进行迭代确实是个坏主意。有道理吗?非常感谢你,Shubham。这绝对有道理:)@LdM快乐编码!
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