Итак, у меня проблема с Python относительно областей видимости переменных.Я написал пользовательскую функцию для вычисления связанных чисел скользящих средних, но она перезаписывает переменную, которую я передаю в нее.
Функция принимает массив данных pandas и целое число и вычисляет проценты на основе скользящих средних.Я загружаю переменную myArray, которая является массивом панд, затем вызываю функцию и пытаюсь сохранить выходные данные в новой переменной.
import pandas as pd
import numpy as np
def calc_Util(columnRange,periods):
columnRange2 = pd.DataFrame(columnRange)
numRows = columnRange2.shape[0]
numCols = columnRange2.shape[1]
outputRange = pd.DataFrame(np.zeros(shape=(columnRange2.shape)),columns=columnRange2.columns)
for c in range(numCols):
maxColumn = columnRange2.iloc[:,c].rolling(window=periods).max().fillna(method='bfill')
for r in range(numRows):
outputRange.iloc[r,c] = columnRange2.iloc[r,c]/maxColumn[r]
return outputRange
myArray = pd.DataFrame(np.random.rand(8000,6)*10)
myArray2 = myArray
myArray2.iloc[:,range(4,5)] = calc_Util(myArray.iloc[:,range(4,5)],180*24)
Я ожидаю, что myArray2 будет копией myArray, но собновлен пятый столбец.Однако после запуска этого кода консоль Jupyter Notebook показывает мне, что пятый столбец myArray был изменен на расчетные значения.