Чтобы найти среднее значение, используя функцию прокрутки, только если в окне доступно более x данных - PullRequest
1 голос
/ 30 мая 2020

У меня есть dataframe df со столбцами, такими как дата, название компании, price_standalone, price_consolidated и т.д. c.

Я хочу найти столбец среднего значения цены за последние 10 лет с одним условием.

Если у price_consolidated есть данные (то есть это не NaN), за последние 10 лет будут использоваться данные столбца price_consolidated, иначе будут использоваться данные price_standalone.

df["Price mean 10 years"] = df.groupby('Company Name')["price_consolidated"].shift().rolling(min_periods=1, window=3650).mean()

Вот как я рассчитал значение. Может ли кто-нибудь помочь мне с условной частью кода? Также, если возможно, другой столбец рядом с ним, указывающий, используется ли price_consolidated или price_standalone.

Например, строка с индексом datetime 31-12-2010 будет вычислять среднее значение от price_consolidated с 31-12-2000 до 31- 12-2010, если все данные доступны, в противном случае он будет вычисляться из price_standalone.

На изображении первая дата вхождения уже вычисляется, поэтому не нужно беспокоиться об этом. sample output

Thx.

date1 = '31/03/2020'
date2 = '31/03/2010'
date1 = pd.to_datetime(date1)
date2 = pd.to_datetime(date2)
if(df_dates2.iloc[date1, 'First Occurence Consolidated']<date2):
    print(1) #find mean by consolidated data
else:
    print(2) #find mean by standalone data

это дает ошибку: ValueError: индексирование на основе местоположения может иметь только [целочисленный, целочисленный фрагмент (точка НАЧАЛА ВКЛЮЧЕНА , КОНЕЧНАЯ точка ИСКЛЮЧЕНА), список целых чисел, логический массив] типы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...