python - 遍历行
问题描述
我对如何同时使用 while 和 for 循环有点困惑。我想要达到的目标如下:
- 设置阈值以停止进程
- 如果初始值低于此阈值,则对于每个数字,将相同行内的值相加
- 更新计数器的值
- 检查更新的值:如果仍然低于阈值,则继续求和,直到达到阈值。
我设置 athreshold = 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
例如:我有
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
我的代码的问题是达到阈值时它不会停止。
解决方案
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
推荐阅读
- doctrine-orm - 如何向 Doctrine 返回的对象添加属性
- javascript - 通过选择复选框选项在 Web 应用程序中显示多张图片
- java - 使用多个 EJB 引用部署 ear Web 应用程序时出现 Glassfish 错误
- jquery - jQuery 基于文本输入字段的乘法值
- java - 如何在 Java 中比较两个二维数组?
- java - Kotlin:使用“val authority”覆盖名为“getAuthorities()”的接口方法
- javascript - 从 firebase 回调中赋值
- javascript - Magento 2 淘汰赛 XML->PHTML->JS->HTML
- javascript - 显示隐藏段落取决于 div 计数
- c++ - 在 C++ 中更改 struct 内部元素的方法?