Cómo actualizar un subconjunto de un DataFrame de pandas MultiIndexed

Estoy usando un DataFrame de pandas MultiIndexed y me gustaría multiplicar un subconjunto del DataFrame por un número determinado.

Es lo mismo queesta pero con un 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

Hasta ahora tan bueno. ¡Pero digamos que veo que todas las cifras de los sábados son solo la mitad de lo que deberían ser! Me gustaria multiplicar todosat Ventas por 2.

Mi primer intento en esto fue:

sat = d.xs('sat', level='day')
sat = sat * 2
d.update(sat)

pero esto no funciona porque la variablesat ha perdido elday Nivel del índice:

>>> sat
                 sales
year flavour          
2008 strawberry     20
     banana         44
2009 strawberry     22
     banana         46

por lo que los pandas no saben cómo unir las nuevas cifras de ventas al antiguo marco de datos.

Tuve una puñalada rápida en:

>>> 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)

No tengo idea de lo que significa ese error, pero me siento como si estuviera haciendo una montaña en una colina. ¿Alguien sabe la forma correcta de hacer esto?

Gracias de antemano, Rob

Respuestas a la pregunta(2)

Su respuesta a la pregunta