Verwendung von loc zu aktualisieren dataframe python pandas
Habe ich ein pandas dataframe (df) mit der Spalten-Struktur :
month a b c d
dieser dataframe Daten für sagen Jan, Feb, Mar, Apr. A,B,C,D sind numerische Spalten. Für den Monat Februar möchte ich die Neuberechnung Spalte Ein und aktualisieren Sie es in den dataframe D. H. für month = Feb, A = B + C + D
Code, den ich verwendet :
df[df['month']=='Feb']['A']=df[df['month']=='Feb']['B'] + df[df['month']=='Feb']['C'] + df[df['month']=='Feb']['D']
Diese lief ohne Fehler, aber nicht ändern Sie die Werte in Spalte A für den Monat Feb. In der Konsole, gab es eine Meldung, dass :
Einen Wert versucht zu werden, auf eine Kopie von einer Scheibe aus einem DataFrame.
Versuchen Sie es mit .loc[row_indexer,col_indexer] = Wert statt
Habe ich versucht zu verwenden .loc aber jetzt das dataframe ich auf Arbeit bin, hatte ich .reset_index()
auf, und ich bin nicht sicher, wie Sie Sie festlegen index und benutzen .loc. Ich folgte Dokumentation aber nicht klar. Könnten Sie mir bitte helfen hier?
Dies ist ein Beispiel dataframe :
import pandas as pd import numpy as np
dates = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
Ich aktualisieren möchten sagen, ein Datum : 2000-01-03. Ich bin nicht in der Lage zu geben, das snippet von meinen Daten, Echtzeit-Daten.
- könnte, fügen Sie ein kleines Beispiel, Ihre dataframe?
- Der dataframe ich arbeite, ist groß, ich habe versucht zu erklären, die Logik hier . Ich werde sehen, wenn ich kann jede dataframe
- Sie befestigen konnte, der wie ein Teil von Ihr dataframe mit
df.head()
oderdf.iloc[:10, :10]
- Warum nicht einfach
df['a'] = df.b + df.c + df.d
? Sie müssen die Beispiel-Daten, um zu klären, was Sie versuchen zu tun, und produzieren eine MVE. stellen - Anton und Alexander : Dies ist ein Beispiel dataframe : import pandas as pd import numpy as np Termine = pd.date_range('1/1/2000', Punkte=8) df = pd.DataFrame(np.random.randn(8, 4), index=Termine, Spalten=['A', 'B', 'C', 'D']) ich will zum update sagen-Datum : 2000-01-03. Ich bin nicht in der Lage zu geben, das snippet von meinen Daten, Echtzeit-Daten.
- für die Zukunft ist es besser, zu aktualisieren Sie Ihre Frage mit Ihren Daten nicht in den Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie sehen konnte, aus der Warnung, die Sie verwenden sollten
loc[row_index, col_index]
. Wenn Sie Untergruppen Ihrer Daten erhalten Sie index-Werte. Sie müssen nur an-pass für row_index und dann mit Komma col_name:Zwar nicht die schönsten, die Art, wie ich möchte, Ihr Ziel erreichen (ohne Sie explizit zu iterieren über die Zeilen) ist:
Hinweis:
ix
ist veraltet da Pandas v0.20.0 zugunsten deriloc
/loc
.