Мультииндексная функция get_level_values ​​для произвольного количества уровней.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Мультииндексная функция get_level_values ​​для произвольного количества уровней.

Сообщение Anonymous »

Есть ли способ создать функцию, которая использует «get_level_values» произвольное количество раз и возвращает нарезанный кадр данных? Пример может объяснить мою потребность.

Мультииндекс:

Код: Выделить всё

arrays = [['bar', 'bar', 'bar', 'baz', 'baz', 'foo', 'foo','foo','qux', 'qux'],
['one', 'two', 'three', 'one', 'four', 'one', 'two', 'eight','one', 'two'],
['green', 'green', 'blue', 'blue', 'black', 'black', 'orange', 'green','blue', 'black']  ]
s = pd.DataFrame(np.random.randn(10), index=arrays)
s.index.names = ['p1','p2','p3']

s
0
p1  p2    p3
bar one   green  -0.676472
two   green  -0.030377
three blue   -0.957517
baz one   blue    0.710764
four  black   0.404377
foo one   black  -0.286358
two   orange -1.620832
eight green   0.316170
qux one   blue   -0.433310
two   black   1.127754

Теперь я хочу создать вот такую ​​функцию:

Код: Выделить всё

def my_func(df,levels, values):
# Code using get_level_values
return ret

# Example use
my_func(s, ['p1'],['bar'])

p1  p2    p3
bar one   green  -0.676472
two   green  -0.030377
three blue   -0.957517

my_func(s, ['p1','p2'],['bar','one'])

p1  p2    p3
bar one   green  -0.676472

Above my_func(['p1'],['bar']) возвращает s.loc[s.index.get_level_values('p1')= ='bar'] и my_func(['p1','p2'],['bar','one']) возвращает s.loc[(s.index.get_level_values('p1')=='bar') & (s.index.get_level_values('p2')=='one')]

Итак, я хочу поместить список из произвольного числа уровней и список с таким же количеством значений и вернуть срезанный фрейм данных.

Любая помощь очень важна оценил!


Подробнее здесь: https://stackoverflow.com/questions/618 ... any-levels
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»