Ich möchte einige Werte aus einer Spalte in meinem DataFrame ändern. Im Moment habe ich eine Ansicht von Auswahl über die Multi-Index von meinem ursprünglichen df
(und Änderung ändert sich df
).Weisen Sie dem MultiIndex DataFrame neue Werte zu
Hier ist ein Beispiel:
In [1]: arrays = [np.array(['bar', 'bar', 'baz', 'qux', 'qux', 'bar']),
np.array(['one', 'two', 'one', 'one', 'two', 'one']),
np.arange(0, 6, 1)]
In [2]: df = pd.DataFrame(randn(6, 3), index=arrays, columns=['A', 'B', 'C'])
In [3]: df
A B C
bar one 0 -0.088671 1.902021 -0.540959
two 1 0.782919 -0.733581 -0.824522
baz one 2 -0.827128 -0.849712 0.072431
qux one 3 -0.328493 1.456945 0.587793
two 4 -1.466625 0.720638 0.976438
bar one 5 -0.456558 1.163404 0.464295
Ich versuche, ein Stück df
auf einen skalaren Wert zu ändern:
In [4]: df.ix['bar', 'two', :]['A']
Out[4]:
1 0.782919
Name: A, dtype: float64
In [5]: df.ix['bar', 'two', :]['A'] = 9999
# df is unchanged
ich wirklich mehrere Werte in der Spalte ändern möchten (und seit Indizierung gibt einen Vektor zurück, keinen skalaren Wert, ich denke, das würde mehr Sinn machen):
In [6]: df.ix['bar', 'one', :]['A'] = [999, 888]
# again df remains unchanged
Ich benutze Pandas 0.11. Gibt es einen einfachen Weg, dies zu tun?
Die aktuelle Lösung besteht darin, df aus einem neuen zu erstellen und Werte zu ändern, die ich möchte. Aber es ist nicht elegant und kann auf komplexen Datenrahmen sehr schwer sein. Meiner Meinung nach sollte das Problem von .ix und .loc kommen, das eine Ansicht aber eine Kopie zurückgibt.
warum -1 vote? Kannst du es wenigstens erklären? – HadiM
+1 eine ausgezeichnete Frage, zu einem verwirrenden Problem. Ich kann nur daran denken, dass es downvoted wurde, weil der Titel nicht beschreibend ist? (aber wer weiß!) –
Sorry für den Titel, aber ich bin kein englischer Muttersprachler und das Thema ist etwas komplex, so dass es schwer ist, einen guten zu finden :-) Wenn du mir einen Titel einreichen willst, kann ich den aktuellen ändern ein. – HadiM