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