Выберите из данного уровня серии MultiIndex

python pandas

97 просмотра

1 ответ

Как я могу выбрать все значения, где «смещение» (второй уровень MultiIndex) выше определенного значения, скажем> 2?

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

dicts = {}

index = np.linspace(1, 50)
index[2] = 2.0  # Create a duplicate for later testing

for n in range(5):
    dicts['test' + str(n)] = pd.Series(np.linspace(0, 20) ** (n / 5),
                                       index=index)

s = pd.concat(dicts, names=('test', 'displacement'))

#  Something like this?
s[s.index['displacement'] > 2]

Я пытался читать документы, но не мог разобраться, даже пытаясь IndexSlice.

Бонусные баллы: как выбрать диапазон, скажем, от 2 до 4?

Заранее благодарю за любую помощь.

Автор: blokeley Источник Размещён: 08.11.2019 11:09

Ответы (1)


0 плюса

Решение
import pandas as pd
import numpy as np

dicts = {}

index = np.linspace(1, 50)

for n in range(5):
    dicts['test' + str(n)] = pd.Series(np.linspace(0, 20) ** (n / 5),
                                       index=index)

s = pd.concat(dicts, names=('test', 'displacement'))

displacement = s.index.get_level_values('displacement')
r = s.loc[(displacement > 2) & (displacement < 5)]

Вдохновленный https://stackoverflow.com/a/18103894/268075

Автор: blokeley Размещён: 20.08.2016 10:38
Вопросы из категории :
32x32