Я хочу переслать данные моего счетчика воды, когда произойдет сброс, чтобы данные были чистыми для анализа.Сброс - это когда значение в следующей строке меньше, чем в предыдущем.
Мой фрейм данных Python Pandas выглядит следующим образом: -
water
0 31031
1 31037
2 31038
3 31043
4 131 (system was reset)
5 223
6 331
7 412
...
Возможно, имеется несколько сбросовданные о воде в моем фрейме данных pandas.
Исследования показывают, что использование циклов / итерации - не лучший вариант для фреймов данных pandas, поэтому я стараюсь избегать.
Я хотел бы обновить фрейм данныхdf, чтобы тот факт, что система была перезагружена с индексом 4, больше не виден, а показатели воды продолжают накапливаться.
например,
water
0 31031
1 31037
2 31038
3 31043
4 31174 # system reset to 0 so value should be 31043 + 131
5 31266 # continuing with the difference through to the end of df
6 31374
7 31445
...
import pandas as pd
df = pd.DataFrame({'water': [31031,31037,,31038,31043,131,223,331,412]})
df["waterreset"] = np.where(df["water"]-df["water"].shift(1)<0, df["water"] + df["water"].shift(1),df["water"])
print(df)
приведенная выше строка кода «waterreset» идентифицирует толькоодна строка, где происходит сброс и не заполняется вперед, плюс я бы предпочел использовать inplace = True для обновления текущего фрейма данных.