Как работает параметр level для метода добавления pandasPython

Программы на Python
Ответить
Anonymous
 Как работает параметр level для метода добавления pandas

Сообщение Anonymous »

Я видел параметр level для методов pd.DataFrame add, sub, div и mul. В документации указано:

level: int или name
Широковещательная передача по уровню, соответствующая значениям индекса на переданном уровне MultiIndex.

Кажется, я не понимаю, как это правильно использовать.
Подумайте:

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

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(8).reshape(4, 2),
pd.MultiIndex.from_product([['A', 'B'], ['one', 'two']]),
list('ab'))

df

a  b
A one  0  1
two  2  3
B one  4  5
two  6  7
Если я добавлю 100, я получу то, что ожидал. Параметр level не имеет значения.

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

pd.concat([df, df.add(100), df.add(100, level=0), df.add(100, level=1)],
axis=1, keys=['Original', 'No Level', 'Level 0', 'Level 1'])

Original    No Level      Level 0      Level 1
a  b        a    b       a    b       a    b
A one        0  1      100  101     100  101     100  101
two        2  3      102  103     102  103     102  103
B one        4  5      104  105     104  105     104  105
two        6  7      106  107     106  107     106  107
Но я подумал, что добавление массива будет необычным.

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

a = np.arange(2) + 100

pd.concat([df, df.add(a), df.add(a, level=0), df.add(a, level=1)],
axis=1, keys=['Original', 'No Level', 'Level 0', 'Level 1'])

Original    No Level      Level 0      Level 1
a  b        a    b       a    b       a    b
A one        0  1      100  102     100  102     100  102
two        2  3      102  104     102  104     102  104
B one        4  5      104  106     104  106     104  106
two        6  7      106  108     106  108     106  108
не имело никакого значения.
Я ожидал чего-то вроде:

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

df.groupby(level=0).apply(lambda df: df.add(a, axis=0))

a    b
A one  100  101
two  103  104
B one  104  105
two  107  108
Может ли кто-нибудь привести конкретный пример того, как и когда использовать этот параметр?

Подробнее здесь: https://stackoverflow.com/questions/381 ... add-method
Ответить

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

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

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

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

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