Если вы хотите получить доступ к bar
, вам нужно использовать loc
или транспонировать его, потому что bar
отсутствует в столбцах:
>>> df.loc['bar']
0 1 2 3
one 0.888182 0.066730 1.397408 -0.550522
two -0.258916 -1.859689 -0.294348 -0.646791
transpose:
>>> df.T['bar']
one two
0 0.888182 -0.258916
1 0.066730 -1.859689
2 1.397408 -0.294348
3 -0.550522 -0.646791
РЕДАКТИРОВАТЬ:
Как указано, очень полезно, в комментариях, в случае, если вы хотите сохранить мультииндекс:
>>> df.xs('bar',drop_level=False)
0 1 2 3
bar one -0.857271 1.271094 0.565691 -0.523375
two 0.826911 0.244787 0.991158 -0.484815
Даже если это будет зависеть на ваш случай использования, кажется, что вам действительно нужно:
>>> arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
>>> df = pd.DataFrame(np.random.randn(4, 8), columns=arrays)
>>> df
bar baz foo qux
one two one two one two one two
0 1.600817 -1.420187 -0.798078 1.632550 -0.737740 -1.036077 -1.034157 1.576907
1 0.111148 -1.830283 0.507195 -0.042425 0.260859 -1.600065 -0.449921 0.657582
2 -1.054305 -0.885309 0.325678 -0.253772 -0.444176 0.331933 0.332281 0.127738
3 1.071590 0.947280 -0.973616 0.677141 0.133742 1.352731 -0.210731 2.079073
# Then you can do either df['bar'] directly
Ссылки:
df.xs
df.T
df.loc
Связь в вашем вопросе. Я бы посоветовал вам go тщательно пройти через это, это очень хорошо объяснено.