В настоящее время я изучаю стационарность моих данных. Я запускаю тест adfuller для каждой из моих переменных, и на следующем этапе я хочу создать список столбцов или, скорее, фрейм данных для стационарных и нестационарных данных, чтобы я мог изменить список с помощью pct.change.
Так выглядит этот банкомат:
print("Observations of Dickey-fuller test \n")
print("stationary columns \n")
adf_results = {}
for col in df.columns.values:
dftest = adfuller(df[col],autolag='AIC')
if dftest[1] < 0.05:
col_list.append(df[[col]])
print(col + " is stationary")
Это работает именно так, как я хочу. Однако, если я попытаюсь получить вывод столбцов с помощью:
list(col_list)
Я получаю список так, как хочу, а также имя столбца, включая все точки данных. См. пример ниже
[col1, col2, Time 01.02.2008 35241.98000 01.03.2008 42194.62000 01.04.2008 51419.81818 Name: col1, dtype: float64, Time 01.02.2008 0 01.03.2008 3 01.04.2008 2 Name: col2, dtype: float64,
Мне просто нужна верхняя часть:
[col1, col2 ]
Чтобы впоследствии я мог создать два новых фрейма данных. Мой подход состоит в том, чтобы получить список, а затем создать df с этой информацией:
dfstationary= df[list(col_list)]
Я чувствую, что это что-то очень простое, поэтому я ищу правильный подход.
Вы получаете этот результат, потому что вы также добавляете содержимое столбца (df[[col]]
) в col_list
, а не только имя столбца (col
).
Чтобы получить только имена столбцов, вы можете использовать:
print("Observations of Dickey-fuller test \n")
print("stationary columns \n")
adf_results = {}
col_list = []
for col in df.columns.values:
dftest = adfuller(df[col],autolag='AIC')
if dftest[1] < 0.05:
col_list.append(col)
print(col + " is stationary")
#view list of stationary columns
print(col_list)