So aktualisieren Sie eine Teilmenge eines MultiIndexed pandas DataFrame
Ich verwende einen MultiIndexed pandas DataFrame und möchte eine Teilmenge des DataFrame mit einer bestimmten Zahl multiplizieren.
Es ist das gleiche wiediese aber mit einem 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
So weit, ist es gut. Aber sagen wir, ich sehe, dass alle Samstagszahlen nur halb so hoch sind, wie sie sein sollten! Ich möchte alles multiplizierensat
Umsatz um 2.
Mein erster Versuch war:
sat = d.xs('sat', level='day')
sat = sat * 2
d.update(sat)
das funktioniert aber nicht weil die variablesat
hat das verlorenday
Stand des Index:
>>> sat
sales
year flavour
2008 strawberry 20
banana 44
2009 strawberry 22
banana 46
Daher weiß Pandas nicht, wie man die neuen Verkaufszahlen wieder in den alten Datenrahmen einfügt.
Ich hatte einen kurzen Stich auf:
>>> 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)
Ich habe keine Ahnung, was dieser Fehler bedeutet, aber ich habe das Gefühl, aus einem Maulwurfshügel einen Berg zu machen. Kennt jemand den richtigen Weg, um dies zu tun?
Vielen Dank im Voraus, Rob