Jak zaktualizować podzbiór pandasów MultiDexex DataFrame

Używam wielowarstwowej pandy DataFrame i chciałbym pomnożyć podzbiór ramki DataFrame o określoną liczbę.

To tak samo jakto ale z 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

Jak na razie dobrze. Ale powiedzmy, że zauważyłem, że wszystkie dane z soboty są tylko o połowę mniejsze niż powinny! Chciałbym pomnożyć wszystkosat sprzedaż o 2.

Moją pierwszą próbą było:

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

ale to nie działa, ponieważ zmiennasat straciłday poziom indeksu:

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

więc pandas nie wie, jak dołączyć do nowych danych sprzedażowych z powrotem do starej ramki danych.

Szybko dźgnął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)

Nie mam pojęcia, co oznacza ten błąd, ale czuję, że robię górę z kretowiska. Czy ktoś wie, jak to zrobić?

Z góry dziękuję, Rob

questionAnswers(2)

yourAnswerToTheQuestion