Ich habe versucht, den Dataframe durch Funktion durch Schleifen durch Zeilen und den geänderten Datenrahmen zu ändern. Im folgenden Code übergebe ich einen Datenrahmen 'ding' an die Funktion 'test' und erstelle eine neue Spalte 'C', indem ich durch jede Zeile iteriere und den modifizierten Datenrahmen zurückgebe. Ich erwartete, dass das test_ding df 3 Spalten hat, aber nur zwei Spalten sehen konnte. Jede Hilfe wird sehr geschätzt.Ändern des Datenrahmens durch Schleifen durch jede Zeile in Funktion
P.S. Es könnte auch andere einfachere Methoden hat diese kleine Aufgabe zu erreichen, aber ich bin auf der Suche über Zeilen zu durchlaufen und möchte die Änderungen an dem Datenrahmen durchgeführt, um sehen außerhalb der Funktion
s1 = pd.Series([1,3,5,6,8,10,1,1,1,1,1,1])
s2 = pd.Series([4,5,6,8,10,1,7,1,6,5,4,3])
ding=pd.DataFrame({'A':s1,'B':s2})
def test(ding):
for index,row in ding.iterrows():
row['C']=row.A+row.B
return ding
test_ding=test(ding)
ich auch itertuple unterschiedlichen dtypes zu erhalten empfehlen würde. Ich kann jetzt nicht sagen, aber ich denke, es ist schneller – piRSquared
Gibt es einen bestimmten Grund, warum können wir nicht auf die Art und Weise zuweisen, die ich gepostet habe? 'row ['C'] = row.A + row.B' –
Da' itrowers' eine Kopie zurückgibt, keine View, also einen Wert der Zeile zuweisen, hat keinen Einfluss auf den ursprünglichen Datenrahmen. Dies ist das Dokument * Sie sollten ** nie ändern ** etwas, über das Sie iterieren. Dies funktioniert nicht in allen Fällen. Abhängig von den Datentypen gibt der Iterator eine Kopie und keine Ansicht zurück, und das Schreiben von daran hat keine Auswirkungen. * – Psidom