2017-06-12 3 views
0

Arbeiten mit einem Datenrahmen df Ich wollte eine neue Spalte A und weisen Sie auf einen einzelnen Wert (eine Zeichenfolge in meinem Fall)Was ist der sauberste Weg, um eine neue pandas-Datenrahmenspalte einem einzelnen Wert zuzuordnen?

eine Warnung
df['A'] = value 

gab und schlug vor, schaffen loc

jedoch die verwenden Lösung unten gab immer noch die gleiche Warnung:

df.loc[:,'A']=value 

einigen Recherchen fand ich die Lösung, unterhalb derer keine Warnung generiert:

Ist es die allgemein akzeptierte Möglichkeit, eine neue Spalte zu erstellen und einem Wert zuzuweisen? Gibt es andere Möglichkeiten mit loc?

Pandas Version '0.20.1'

EDIT: Dies ist die Warnmeldung für die 2 ersten Verfahren erhalten

"A value is trying to be set on a copy of a slice from a DataFrame. 
Try using .loc[row_indexer,col_indexer] = value instead" 
+0

erstellt haben Sie etwas vor dieser Linie, haben Sie in Scheiben schneiden oder Unter wählen Sie Ihr Original df und zuweisen zu 'df' vor der ersten Zeile? – EdChum

+1

Ich benutze gerne df.assign, weil es eine Kopie des ursprünglichen Datenrahmens erstellt, wobei die anderen beiden den ursprünglichen Datenrahmen selbst verändern und es daher schwierig machen, zurückzugehen und Fehler zu beheben. –

+0

df wurde als boolesche Indizierung von einem anderen Datenrahmen abgeleitet (der einen anderen Namen hatte) – user7188934

Antwort

0

Wie @EdChum und @ScottBoston erklärt

Seit df war unter Verwendung einer Maske auf einige Original-Datenrahmen abgeleitet

df = df_original[boolean_mask] 

zu vermeiden die Warnung mit den beiden ersten Methoden, verwenden Sie stattdessen df=df_original[boolean_mask].copy()

df.assign dies nicht braucht, weil es automatisch eine Kopie des ursprünglichen Datenrahmen

Verwandte Themen