У меня есть dataframe с квартальным ВВП США как значения столбца. Я хотел бы посмотреть на значения, 3 за раз, и найти индекс, где ВВП упал в течение следующих двух кварталов подряд. Это означает, что мне нужно сравнивать отдельные элементы внутри df ['GDP'] друг с другом, в группах по 3.Как получить доступ к отдельным элементам в катящемся окне на фрейме данных
Вот пример dataframe.
df = pd.DataFrame(data=np.random.randint(0,10,10), columns=['GDP'])
df
GDP
0 4
1 4
2 4
3 1
4 4
5 4
6 8
7 2
8 3
9 9
Я использую df.rolling().apply(find_recession)
, но я не знаю, как я могу получить доступ к отдельным элементам подвижного окна в моей find_recession()
функции.
gdp['Recession_rolling'] = gdp['GDP'].rolling(window=3).apply(find_recession_start)
Как я могу получить доступ к отдельным элементам внутри подвижного окна, так что я могу сделать сравнение таких как gdp_val_2 < < gdp_val_1 gdp_val? .
.rolling() применяется() будет проходить через весь dataframe, 3 значения в то время, так что давайте посмотрим на одном конкретном окне, которое начинается с индекса местоположения 6:
GDP
6 8 # <- gdp_val
7 2 # <- gdp_val_1
8 3 # <- gdp_val_2
Как я могу получить доступ к gdp_val, gdp_val_1 и gdp_val_2 в текущем окне?
Ваш вопрос непонятен. Небольшая выборка ваших данных и ожидаемый результат помогут. Пожалуйста, прочитайте [MCVE] (http://stackoverflow.com/help/mcve). – Kartik
[Документы] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.window.Rolling.apply.html#pandas.core.window.Rolling.apply) говорят, что функция '' 'Необходимо создать одно значение из ввода ndarray ...' ''. Таким образом, вы просто индексируете * в * это. Я предполагаю, что это первый позиционный аргумент. Напишите фиктивную функцию, которая печатает переданное. – wwii
Попробуйте '' 'numpy.all (a [1:] wwii