Как перебирать столбцы верхнего уровня в мультизадаче pandas dataframe

Для eclipse я использую плагин pkg-config, где возможно:

https://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt

Если это окно конфигурации:

enter image description here [/g1]

0
задан Michael Dz 13 July 2018 в 13:31
поделиться

1 ответ

Я думаю, что цикл не нужен, для выбора использования slicers :

idx = pd.IndexSlice
df1 = df.loc[:, idx[:, 'Open', 'Bid']]
print (df1)
               SPY   ARKW
              Open   Open
               Bid    Bid
2018-07-03  272.86  56.00
2018-07-02  269.49  54.87
2018-06-29  272.09  55.58

Или использовать DataFrame.xs :

df1 = df.xs(('Open', 'Bid'), level=[1, 2], axis=1) 
print (df1)
               SPY   ARKW
2018-07-03  272.86  56.00
2018-07-02  269.49  54.87
2018-06-29  272.09  55.58

df1 = df.xs(('Open', 'Bid'), level=[1, 2], axis=1, drop_level=False) 
print (df1)
               SPY   ARKW
              Open   Open
               Bid    Bid
2018-07-03  272.86  56.00
2018-07-02  269.49  54.87
2018-06-29  272.09  55.58

EDIT:

Для лучшей производительности все значения в MultiIndex должны быть отсортированы:

df = df.sort_index(axis=1)
2
ответ дан jezrael 17 August 2018 в 12:44
поделиться
  • 1
    Спасибо, это очень полезно, но у меня проблема с первым примером, возвращается: UnsortedIndexError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (3), lexsort depth (1)'. Не могли бы вы также написать код для цикла? Я хочу сделать некоторые вычисления над столбцами без создания новых структур данных. – Michael Dz 13 July 2018 в 13:41
  • 2
    @MichaelDz - вам нужно, к сожалению, сортировать столбцы с помощью df = df.sort_index(axis=1), поэтому необходимо изменить порядок столбцов, а также docs – jezrael 13 July 2018 в 13:43
Другие вопросы по тегам:

Похожие вопросы: