Получить индекс как int в панде dataframe - PullRequest
0 голосов
/ 12 июня 2018

У меня есть датафрейм pandas, который индексируется строками.Допустим, мой индекс выглядит как df.index = ['AA','AB','AC',...], и я хочу получить доступ к df.loc['AC':'AE'], что хорошо работает.

Есть ли способ получить положение этих индексов, дав мне ['AC':'AE'] => [2,3,4]?Я знаю, что есть df.index.get_loc('AC') => 2, но это работает только для отдельных значений, а не для списков.

Ответы [ 2 ]

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

Вы можете определить функцию для извлечения целочисленного диапазона:

df = pd.DataFrame(np.arange(7), index=['AA','AB','AC','AD','AE','AF','AG'])

def return_index(df, a, b):
    col_map = df.index.get_loc
    return np.arange(col_map(a), col_map(b)+1)

res = return_index(df, 'AC', 'AE')

print(res)

array([2, 3, 4])
0 голосов
/ 12 июня 2018

Использование:

df = pd.DataFrame({'a': [5,6,7,8, 10]}, index=['AA','AB','AC','AD','AE'])

pos = list(range(df.index.get_loc('AC'), df.index.get_loc('AE') + 1))
print (pos)
[2, 3, 4]

Другие решения с Index.searchsorted:

pos = list(range(df.index.searchsorted('AC'), df.index.searchsorted('AE') + 1))
print (pos)
[2, 3, 4]

a = df.index.searchsorted(['AC', 'AE'])
pos = list(range(a[0], a[1] + 1))
print (pos)
[2, 3, 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...