mam DataFrame z kolumnami MultiIndex, który wygląda tak:Jak wybrać tylko określone kolumny z DataFrame z kolumnami MultiIndex?
# sample data
col = pd.MultiIndex.from_arrays([['one', 'one', 'one', 'two', 'two', 'two'],
['a', 'b', 'c', 'a', 'b', 'c']])
data = pd.DataFrame(np.random.randn(4, 6), columns=col)
data
Jaka jest właściwa, prosty sposób wybierania tylko określonych kolumn (np ['a', 'c']
, a nie zakres) z drugiego poziomu?
Obecnie robię to tak:
import itertools
tuples = [i for i in itertools.product(['one', 'two'], ['a', 'c'])]
new_index = pd.MultiIndex.from_tuples(tuples)
print(new_index)
data.reindex_axis(new_index, axis=1)
Nie czuję się jak dobre rozwiązanie, jednak, ponieważ mam do odpadniesz itertools
, budować kolejną MultiIndex ręcznie i następnie reindex (a mój aktualny kod jest jeszcze bardziej zawiły, ponieważ listy kolumn nie są tak proste do pobrania). Jestem pewien, że musi to być jakiś sposób na zrobienie tego, ale wszystko, co próbowałem, spowodowało błędy.
Czy próbowałeś używać słowników? – darmat
Nie, nie mam. Masz na myśli szybsze konstruowanie MultiIndex? Jeśli tak, to nie o to chodzi - chciałbym go ominąć i zindeksować bezpośrednio z czymś takim jak 'data.xs (['a', 'c'], axis = 1, level = 1)' – metakermit
załóżmy, że to: – darmat