#python #while-loop #counter
Вопрос:
Я пытаюсь создать текущее (движущееся) общее значение, называемое var1
значением . Таким образом, я бы хотел, чтобы это выглядело так:
Таким образом, если var1 = 5, 4, 3, 12
для первых четырех значений соответственно я хочу 9 (5 4), 7 (4 3), 15 (3 12) для ОБЩИХ значений и т. Д.
Вместо этого он просто принимает 2 РАЗА var1
, так что первые четыре значения total равны:
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)
кто-нибудь может помочь?
спасибо
, Джон
Ответ №1:
Фрейм данных Pandas не является простой переменной Python, даже если вы выполняете с ним вычисления: он ведет себя более или менее как векторизованный 2D-массив.
Что происходит в вашем коде:
- вы устанавливаете столбец
total
кадра данных равным 0:data.total
становится серией той же длины, что и кадр данных, содержащий только 0 значений. - вы выполняете (для
i == 1
)data.total = data.var1
: поскольку ранее он содержал 0 значений,data.total
теперь является копией (серии)data.var1
- вы выполняете (для
i == 2
)data.total = data.var1
: ок,data.total
теперь содержит в два раза больше значенийdata.var1
- конец цикла, потому
3 < 3
что это ложь…
Что делать дальше:
- прочитайте учебник по Пандам, если вы хотите пойти этим путем, но, пожалуйста, помните, что Панды-это не Python, и некоторые объекты Панды имеют другую семантику, чем стандартные объекты Python… конечно, забудьте о Пандах, если вы хотите изучать только Python
- Если вы действительно хотите сделать это по-панд, волшебное слово —
shift
:data.total = data.var1 data.var1.shift()