Зацикливание имен столбцов Pandas для создания нового фрейма данных - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь зациклить столбцы в кадре данных, и когда имя столбца соответствует критериям, создайте новый кадр данных и / или добавьте его в существующий кадр данных.Например, мой текущий фрейм данных имеет следующие имена столбцов:

открыть высокий низкий объем IVV открыть высокий низкий объем EWH открыть высокий низкий объем INDY открыть высокий низкий объем EWG открыть высокий низкий объем ENZL

Iхочу цикл, который найдет IVV, EWH, INDY, EWG и ENZL и добавит их в свой собственный фрейм данных.

Я пробовал следующее:

Indexlist = ['IVV', 'EWH', 'INDY', 'EWG', 'ENZL']

Попытка отбросить значениястолбцы:

for column in data:
    print(column)
    if column != Indexlist:
        data.drop([column], axis=0))

Попытка удаления столбцов

for column in data:
    print(column)
    if column != Indexlist:
        del data[column]

Попытка выбрать столбцы

data_sample = data[column].isin(Indexlist)

все эти методы выдают ошибки.

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Вы можете использовать pd.Index.isin с pd.DataFrame.loc для логической индексации:

data_sample = data.loc[:, data.columns.isin(Indexlist)]

Или прямой индексации, если вы заранее знаете, что весь списокэлементы существуют в виде столбцов в вашем фрейме данных:

data_sample = data[Indexlist]
0 голосов
/ 24 июня 2018

Я думаю, нужно проверить подстроки имен столбцов по str.contains с помощью регулярного выражения - объединить все значения списка по | для OR:

data1 = data.loc[:, data.columns.str.contains('|'.join(Indexlist))]

Если необходимо выбрать по именам столбцов, используйте подмножество:

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