【问题标题】:I am not creating another variable as I expect to我没有像我期望的那样创建另一个变量
【发布时间】:2021-11-30 08:38:37
【问题描述】:

我正在尝试创建一个名为var1 的运行(移动)总计。 因此,我希望它看起来像这样:

因此,如果var1 = 5, 4, 3, 12 分别为前四个值,我想要 TOTAL 值为 9 (5+4)、7 (4+3)、15 (3+12) 等。

相反,它只占用了 2 次 var1,因此总计的前四个值是:

10, 8, 6, 24

这是我正在尝试的代码。它似乎工作(没有错误)

import datetime
import pandas as pd
data=pd.read_csv("C:/Users/ameri/tempjohn.csv")
data.total=0
i=1
while i < 3:
data.total+=data.var1
i+=1
print(data.total)

有人可以帮忙吗? 谢谢 约翰

【问题讨论】:

    标签: python while-loop counter


    【解决方案1】:

    即使您使用 Pandas 数据框进行计算,它也不是一个简单的 Python 变量:它的行为或多或少类似于一个矢量化的 2D 数组。

    你的代码会发生什么:

    1. 您将数据帧的列 total 设置为 0:data.total 成为与仅包含 0 个值的数据帧长度相同的系列
    2. 你执行(对于i == 1data.total += data.var1:因为它以前包含0个值,data.total现在是(系列)data.var1的副本
    3. 你执行(对于i == 2data.total += data.var1:好的,data.total 现在包含两倍于data.var1 的值
    4. 循环结束,因为3 &lt; 3 为假...

    下一步做什么:

    1. 如果您想这样做,请阅读 Pandas 教程,但请记住,Pandas 不是 Python,并且某些 Pandas 对象的语义与 标准 Python 对象不同。 . 如果你只想学习 Python,就别管 Pandas了
    2. 如果你真的想用 Pandas 的方式来做,神奇的词是shift:data.total = data.var1 + data.var1.shift()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 2019-12-04
      相关资源
      最近更新 更多