Выберите из кадра данных Pandas, используя несколько фрагментов

Допустим, у меня есть фрейм данных со 100 столбцами и 10 000 строк. Я пытаюсь извлечь ряд столбцов, используя комбинацию имен отдельных столбцов и фрагментов (например, «A1», «C1»: «C3», «D5»: «D57» и т. д.). Когда я пытаюсь это:

dfSelect = df.loc[:, 'A1', 'D5':'D7']

Python возвращается

IndexingError: Too many indexers

Если я попробую это:

dfSelect = df.loc[:, ['A1', 'D5':'D7']]

Python возвращается

 File "<ipython-input-2-1f38c6f634d4>", line 653
    dfSelect = df.loc[:, ['A1', 'D5' : 'D7']]
                                     ^
SyntaxError: invalid syntax

Я знаю, что запуск нескольких dfs - по одному для каждого элемента, который нужно нарезать, - а затем объединение полученных кадров данных будет работать, но если у меня есть 50+ столбцов для извлечения, это не очень эффективно.

Я также пытался запустить цикл, но это не удалось.

for i in fieldLst:
    dfSelect = pd.concat(df.loc[:, i])

TypeError: first argument must be an iterable of pandas objects, you passed an object of type "Series"

Есть ли какой-то способ, который мне не хватает? Спасибо.


person jonathan63    schedule 04.08.2021    source источник
comment
На самом деле это более сложная проблема, чем может быть, но эта операция не очень хорошо поддерживается пандами. Но есть несколько вариантов, перечисленных в связанном дубликате.   -  person Henry Ecker    schedule 05.08.2021