【发布时间】:2021-04-12 18:32:18
【问题描述】:
我有一个用于执行一些计算的 python/pandas 代码,但我遇到了性能问题。我正在尝试在 SQL 上编写所有内容,并使用 BigQuery 更新表。
我面临的问题是根据行号更新现有表并使用以前的行进行计算。
下面的代码是我正在使用的,现在我需要在 SQL 中执行此操作。 “i”是行号。
if i <= 4:
perfil['B'].iloc[i] = 0
else:
perfil['B'].iloc[i] = perfil['A'] + perfil['B'].iloc[i - 2]
所以,对于前 5 行,我做了一些不使用前几行的计算。但在那之后,计算将使用以前的行。
我的表已经这样创建了:
| DEPTH_M | A | B |
|-----------|---|---|
|1.2 |2 |0 |
|1.4 |3 |0 |
|1.6 |6 |0 |
|1.8 |2 |0 |
|2.0 |1 |0 |
|2.2 |6 |0 |
|2.4 |7 |0 |
|2.6 |6 |0 |
在一些用户输入之后,我需要使用我之前显示的代码在表格中执行更新,结果如下:
| DEPTH_M | A | B |
|-----------|---|------------------------------------------------------|
|1.2 |2 |0 |
|1.4 |3 |0 |
|1.6 |6 |0 |
|1.8 |2 |0 |
|2.0 |1 |0 (Zero till now, first 5 rows are filled with zeros)|
|2.2 |6 |6 (6 from A + 0 from the past two rows) |
|2.4 |7 |7 (7 from A + 0 from the past two rows) |
|2.6 |6 |12 (6 from A + 6 from the past two rows) |
提前致谢!
【问题讨论】:
-
请提供示例数据、期望的结果以及您正在实施的逻辑的清晰解释。
-
你用的是哪个版本的mysql?
-
@GordonLinoff 我编辑了帖子,抱歉信息不足。
-
@KaziMohammadAliNur 实际上我正在使用 Python 脚本中的 Google BigQuery API。
标签: sql pandas google-bigquery