是否有任何有效或高效的方法可以从 python 中的数据框中找到数字的净位置

is there any effective or efficient way to find net position of numbers from a data frame in python

我有一个多索引 df,列为“Turtle”

|           |        | Turtle | Net Pos|
|-----------|--------|--------|--------|
|2004-11-04 |09:24   |6       |        |
|           |09:34   |2       |        |
|           |09:44   |0       |        |
|           |09:54   |4       |        |
|           |09:04   |1       |        |
|           |09:14   |2       |        |
|           |09:24   |9       |        |

turtle_factor = 3
base_quantity = 2

我需要的是“Net Pos”。我想不出一种优雅的方法。 我需要的是使用 Numpy 或 Pandas 的 col Net position 数据集庞大,需要使用递归,避免crash。

计算

6 会被洒在 6 次 1

1 1 1 1 1 1

先1会乘base_quantity,所以1*2

第二个 1 将与第一个 1 的结果相乘,海龟因子为 2*3

第三个1将乘以第二个1的计算结果乘以6*3以上的海龟因子

第四个将乘以第三个1的计算结果乘以18*3以上的海龟因子,依此类推 最后将它们相加得到如下第一行的结果 728

|           |        | Turtle | Net Pos|
|-----------|--------|--------|--------|
|2004-11-04 |09:24   |6       |    728 |
|           |09:34   |2       |      8 |
|           |09:44   |0       |      0 |
|           |09:54   |4       |     80 |
|           |09:04   |1       |      2 |
|           |09:14   |2       |      8 |
|           |09:24   |9       |  19682 |


有一个简单的公式可以将 Turtle 映射到 Net Pos。计算可以表示为几何级数时间的总和base_quantity,产生下面的函数f

turtle_factor = 3
base_quantity = 2

def f(n):
  return base_quantity * (turtle_factor ** n - 1) // (turtle_factor - 1)

df = pd.DataFrame({
    "Turtle": [6, 2, 0, 4, 1, 2, 9],
})
df["Net Pos"] = f(df.Turtle)