Создать список определенных столбцов из статистического теста

В настоящее время я изучаю стационарность моих данных. Я запускаю тест 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)]

Я чувствую, что это что-то очень простое, поэтому я ищу правильный подход.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы получаете этот результат, потому что вы также добавляете содержимое столбца (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)

Другие вопросы по теме