Итак, у меня есть огромный фрейм данных, из которого мне итеративно нужно нарезать несколько разных столбцов. Все столбцы, которые нужно разрезать, у меня есть в списке, например
[col1, col2, col3]
[col2, col3, col4]
[col1, col2, col4]
et c et c.
То, что я делаю сейчас, это я l oop через список столбцов, а затем используйте lo c для выбора всех столбцов, например
df.loc[:,columns]
(где столбцы - это строка из приведенного выше списка, например [col1, col2, col3]
)
Это работает , но, как я уже упоминал, у меня огромный фрейм данных, а список столбцов намного больше, чем 3.
Есть ли способ векторизовать эту операцию и сделать все сразу, при этом получая разные , отдельные результаты? Мне нужен не один фрейм данных, а другой фрагмент фрейма данных для каждой отдельной комбинации столбцов.
EDIT:
Это пример того, что я использую сейчас, и он работает:
import pandas as pd
import numpy as np
data = {'Col1':['Tom', 'nick', 'krish', 'jack'], 'Col2':[20, 21, 19, 18], 'Col3':[20, 21, 19, 18], 'Col4':[20, 21, 19, 18]}
# Create DataFrame
df = pd.DataFrame(data)
cols_to_select = np.empty(3, dtype=np.object)
cols_to_select[0] = ['Col1', 'Col3']
cols_to_select[1] = ['Col2', 'Col3']
cols_to_select[2] = ['Col3', 'Col4']
for col in cols_to_select:
print(df.loc[:, col])
Вывод:
Col1 Col3
0 Tom 20
1 nick 21
2 krish 19
3 jack 18
Col2 Col3
0 20 20
1 21 21
2 19 19
3 18 18
Col3 Col4
0 20 20
1 21 21
2 19 19
3 18 18
Проблема в том, что в этом примере нарезка столбцов происходит три раза в for l oop. Можно ли сделать это более эффективным, сохранив те же результаты?