получить все после нечислового индекса, не включая индекс в серии панд

python pandas

368 просмотра

2 ответа

183192 Репутация автора

Рассмотрим серию sниже:

s = pd.Series(np.arange(18, 0, -3), list('ABCDEF'))
s

A    18
B    15
C    12
D     9
E     6
F     3
dtype: int32

Я хочу иметь доступ ко всем элементам после индекса 'D'

E     6
F     3
dtype: int32

Если я

s.loc['D':]

я получил

D     9
E     6
F     3
dtype: int32

Не то, что я хотел. Я мог бы

s.loc['D':].iloc[1:]

Но это не дает мне удобного способа вернуться обратно к фрейму данных.

Автор: piRSquared Источник Размещён: 18.07.2016 04:27

Ответы (2)


3 плюса

137826 Репутация автора

Решение

ОБНОВЛЕНИЕ: благодаря @Alex он напомнил, что индексы не всегда монотонно растут:

In [85]: s
Out[85]:
F    18
B    15
D    12
A     9
C     6
E     3
dtype: int32

In [86]: s.iloc[s.index.get_loc('D') + 1:]
Out[86]:
A    9
C    6
E    3
dtype: int32

попробуй это:

In [57]: s[s.index > 'D']
Out[57]:
E    6
F    3
dtype: int32

или используя индексаторы:

In [59]: s.ix[s.index > 'D'] = 100

In [60]: s
Out[60]:
A     18
B     15
C     12
D      9
E    100
F    100
dtype: int32
Автор: MaxU Размещён: 18.07.2016 04:28

3 плюса

11677 Репутация автора

См. Ответ MaxU, если вы знаете, что значения индекса монотонно растут. В противном случае...

m = s.index == 'D'
idx = m.argmax() if m.any() else len(m)
s.iloc[idx + 1:] = 0
Автор: Alex Размещён: 18.07.2016 04:43
Вопросы из категории :
32x32