Как выбрать индекс строки или столбца индекса таблицы панд по оси - PullRequest
0 голосов
/ 01 мая 2018

В таблицах pandas строки-индексы и столбцы-индексы имеют очень похожий интерфейс, а некоторые операции позволяют работать либо со строками, либо со столбцами просто с помощью параметра axis. (Например, sort_index и многие другие.)

Но как я могу получить доступ (чтение и запись) к индексу строки или столбцу, указав ось?

# Instead of this
if axis==0:
    table.index = some_function(table.get_index_by_axis(axis))
else:
    table.column = some_function(table.get_index_by_axis(axis))

# I would like to simply write:
newIndex = some_function(table.get_index_by_axis(axis))
table.set_index_by_axis(newIndex, axis=axis)

Существует ли что-то вроде get_index_by_axis и set_index_by_axis?

Обновление: Кадры данных имеют атрибут axes, позволяющий выбирать ось по индексу. Тем не менее, это только для чтения. Присвоение нового значения не влияет на таблицу.

index = table.axes[axis]         # Read an index
newIndex = some_function(index)  
table.axes[axis] = newIndex      # This has no effect on table.

1 Ответ

0 голосов
/ 28 июня 2018

Я заглянул в исходный код панд, чтобы увидеть, как используется ключевое слово axis. Есть метод _get_axis_name, который принимает ось в качестве параметра.

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

Передать параметр оси:

>>> df._get_axis_name(axis=0)
'index'

>>> df._get_axis_name(axis=1)
'columns'

Вы можете использовать это с getattr или setattr.

>>> getattr(df, df._get_axis_name(axis=0))
RangeIndex(start=0, stop=3, step=1)

>>> getattr(df, df._get_axis_name(axis=1))
Index(['A', 'B'], dtype='object')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...