Я пытаюсь установить подкадр данных на основе списка имен столбцов.
Вот пример кода:
import pandas as pd
import numpy as np
arrays = [['A1', 'A1', 'A1', 'A2', 'A2', 'A2', 'A3', 'A3', 'A3', 'A4', 'A4', 'A4'],
['ba', 'be', 'bi', 'ba', 'be', 'bi', 'ba', 'be', 'bi', 'ba', 'be', 'bi']]
tuples = list(zip(*arrays))
mindex = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(4, 12), index=['A', 'B', 'C', 'D'], columns=mindex)
print(df)
first A1 ... A4
second ba be bi ... ba be bi
A 0.825002 -0.569523 0.332106 ... 0.035184 -1.015359 0.889204
B 0.633793 -0.213981 0.761387 ... -1.566489 -0.298129 -1.203579
C -0.732290 0.774084 0.520561 ... 0.458506 -0.216635 0.968948
D -0.418444 -1.096581 0.334761 ... 0.962183 1.950046 -0.532924
[4 rows x 12 columns]
idx_select = ['A2', 'A3', 'A4']
df2 = df.loc[:, idx_select].copy()
print(df2)
first A2 ... A4
second ba be bi ... ba be bi
A -0.109265 1.442299 -0.206023 ... 0.035184 -1.015359 0.889204
B 0.742486 -0.529073 -1.814155 ... -1.566489 -0.298129 -1.203579
C -0.477671 -0.689706 -0.717814 ... 0.458506 -0.216635 0.968948
D -2.269811 0.060901 -0.977420 ... 0.962183 1.950046 -0.532924
[4 rows x 9 columns]
print(df2.columns.levels[0])
Index(['A1', 'A2', 'A3', 'A4'], dtype='object', name='first')
Я ожидал, что окончательный результат будет соответствоватьстолбцы отображаются при печати df2. Почему столбцы все еще содержат исходный элемент A1? Добавление или удаление .copy () ничего не меняет. Я планирую выполнить несколько поднаборов следующим образом.
Заранее спасибо.