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
Код: Выделить всё
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
Код: Выделить всё
levelЯ ожидал чего-то вроде:
Код: Выделить всё
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
Мобильная версия