2017-09-08 8 views
0

Ich habe einen großen Datenrahmen mit vielen Spalten.Pandas - addieren Wert an bestimmten Iloc in neue Dataframe Spalte

Für jede Zeile/Index im Datenframe mache ich einige Operationen, lese einige attail, usw. ein und bekomme einen neuen Wert. Gibt es eine Möglichkeit, diesen neuen Wert in einer neuen Spalte in der richtigen Zeile/Index hinzuzufügen?

Ich kann .assign verwenden, um eine neue Spalte hinzuzufügen, aber während ich die Zeilen durchlaufe und nur die Daten erzeuge, die jeweils für einen Wert hinzugefügt werden (die Generierung ist ziemlich kompliziert). Wenn es generiert wird, möchte ich es sofort zum Datenframe hinzufügen, anstatt zu warten, bis ich die gesamte Serie generiert habe.

Dies funktioniert nicht und gibt einen Schlüssel Fehler:

df['new_column_name'].iloc[this_row]=value 

Muss ich die Säule zuerst oder etwas initialisieren?

+0

folgt. – Dark

+0

Die Operation ist ziemlich kompliziert und beinhaltet das Lesen und Manipulieren verschiedener Datensätze, was letztendlich zur Folge hat, dass eine Zahl generiert wird. Ich möchte diese Nummer in die richtige Zeile in meinem vorhandenen Datenrahmen hinzufügen. – Rob

Antwort

1

Wenn Sie einen Datenrahmen haben wie

import pandas as pd 
df = pd.DataFrame(data={'X': [1.5, 6.777, 2.444, pd.np.NaN], 'Y': [1.111, pd.np.NaN, 8.77, pd.np.NaN], 'Z': [5.0, 2.333, 10, 6.6666]}) 

Statt ILoc, können Sie .loc mit Zeilenindex und Spaltennamen verwenden, wie df.loc[row_indexer,column_indexer]=value

df.loc[[0,3],'Z'] = 3 

Ausgang:

 
     X  Y  Z 
0 1.500 1.111 3.000 
1 6.777 NaN 2.333 
2 2.444 8.770 10.000 
3 NaN NaN 3.000 
0

Es sind zwei Schritte zu erstellen & füllen Sie eine neue Colu mn nur eine Zeilennummer mit ... (in diesem Ansatz ILoc wird nicht verwendet)

Zunächst erhalten die Zeilenindex Wert unter Verwendung der Zeilennummer

rowIndex = df.index[someRowNumber] 

Dann Verwenden Sie Zeilenindex mit der Funktion loc, um die spezifische Zeile zu referenzieren und die neue Spalte/

hinzuzufügen Es wird viel einfacher zu beantworten, wenn Sie den Betrieb zur Verfügung stellen Sie auszuführen versuchen, einen Ausschnitt von Datenrahmen und die erwartete Ausgabe

können diese beiden Schritte in einer Zeile kombinieren wie

df.loc[df.index[someRowNumber], 'New Column Title'] = "some value" 
Verwandte Themen