Можете ли вы использовать loc для выбора диапазона столбцов плюс столбец вне диапазона? - PullRequest
0 голосов
/ 01 июня 2018

Предположим, я хочу выбрать диапазон столбцов в кадре данных: назовите их «column_1» - «column_60».Я знаю, что могу использовать loc следующим образом: df.loc[:, 'column_1':'column_60'] Это даст мне все строки в столбцах 1-60.

Но что, если я захочу этот диапазон столбцов плюс 'column_81'.Это не работает: df.loc[:, 'column_1':'column_60', 'column_81']

Выдает ошибку «Too many indexers».Есть ли другой способ заявить об этом, используя loc?Или loc даже лучшая функция для использования в этом случае?

Большое спасибо.

Ответы [ 3 ]

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

Вы можете использовать pandas.concat ():

pd.concat([df.loc[:,'column_1':'columns_60'],df.loc[:,'column_81']],axis=1)

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

Вы можете использовать numpy.r_ для объединения диапазонов со скалярами.Единственное осложнение заключается в том, что вам нужно использовать pd.DataFrame.iloc вместо этого, но это можно сделать с помощью df.columns.get_loc.

Вот демонстрационная версия:

import pandas as pd
import numpy as np

df = pd.DataFrame(columns=['column'+str(i) for i in range(1, 82)])

colidx = df.columns.get_loc

res = df.iloc[:, np.r_[colidx('column1'):colidx('column5'), colidx('column80')]]

print(res.columns)

Index(['column1', 'column2', 'column3', 'column4', 'column80'], dtype='object')
0 голосов
/ 01 июня 2018

Как насчет

df.loc[:, [f'column_{i}' for i in range(1, 61)] + ['column_81']]

или

df.reindex([f'column_{i}' for i in range(1, 61)] + ['column_81'], axis=1)

, если вы хотите заполнить пропущенные столбцы, если они есть, значениями по умолчанию NaN.

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