Como atualizar um subconjunto de um DataFrame pandas MultiIndexed
Eu estou usando um DataFrame pandas MultiIndexed e gostaria de multiplicar um subconjunto do DataFrame por um determinado número.
É o mesmo queisto mas com um MultiIndex.
>>> d = pd.DataFrame({'year':[2008,2008,2008,2008,2009,2009,2009,2009],
'flavour':['strawberry','strawberry','banana','banana',
'strawberry','strawberry','banana','banana'],
'day':['sat','sun','sat','sun','sat','sun','sat','sun'],
'sales':[10,12,22,23,11,13,23,24]})
>>> d = d.set_index(['year','flavour','day'])
>>> d
sales
year flavour day
2008 strawberry sat 10
sun 12
banana sat 22
sun 23
2009 strawberry sat 11
sun 13
banana sat 23
sun 24
Por enquanto, tudo bem. Mas digamos que todos os números de sábado são apenas metade do que deveriam ser! Eu gostaria de multiplicar tudosat
vendas por 2.
Minha primeira tentativa foi:
sat = d.xs('sat', level='day')
sat = sat * 2
d.update(sat)
mas isso não funciona porque a variávelsat
perdeu oday
nível do índice:
>>> sat
sales
year flavour
2008 strawberry 20
banana 44
2009 strawberry 22
banana 46
Assim, os pandas não sabem como juntar os novos números de vendas ao velho dataframe.
Eu tive uma punhalada rápida em:
>>> sat = d.xs('sat', level='day', copy=False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2248, in xs
raise ValueError('Cannot retrieve view (copy=False)')
ValueError: Cannot retrieve view (copy=False)
Eu não tenho ideia do que esse erro significa, mas eu sinto que estou fazendo uma montanha fora de um montículo. Alguém sabe o caminho certo para fazer isso?
Obrigado antecipadamente, Rob