520 Stimmen

Wie fügt man eine leere Spalte zu einem Datenrahmen hinzu?

Was ist der einfachste Weg, eine leere Spalte zu einem Pandas DataFrame-Objekt hinzuzufügen? Das beste, was ich gefunden habe, ist so etwas wie

df['foo'] = df.apply(lambda _: '', axis=1)

Gibt es eine weniger abwegige Methode?

13voto

Ankush Rathour Punkte 270
df["C"] = ""
df["D"] = np.nan

Die Zuweisung wird Sie diese Warnung geben SettingWithCopyWarning:

Es wird versucht, einem Ausschnitt eines DataFrame einen Wert zuzuweisen. Versuchen Sie stattdessen, .loc[Reihenindex,Spaltenindex] = Wert zu verwenden.

deshalb ist es besser insert zu verwenden:

df.insert(Index, Spaltenname, Spaltenwert)

Wenn Ihnen diese Antwort hilft, vergessen Sie nicht, sie zu upvoten

7voto

Joy Mazumder Punkte 860

Wenn Sie den Spaltennamen aus einer Liste hinzufügen möchten

df=pd.DataFrame()
a=['col1','col2','col3','col4']
for i in a:
    df[i]=np.nan

6voto

edge-case Punkte 1008

@emunsing's Antwort ist wirklich cool, um mehrere Spalten hinzuzufügen, aber ich konnte es für mich nicht zum Laufen bringen in Python 2.7. Stattdessen fand ich heraus, dass dies funktioniert:

mydf = mydf.reindex(columns = np.append( mydf.columns.values, ['newcol1','newcol2'])

6voto

Usman Ahmad Punkte 376

Man kann df.insert(index_to_insert_at, column_header, init_value) verwenden, um eine neue Spalte an einem bestimmten Index einzufügen.

cost_tbl.insert(1, "col_name", "") 

Die obige Aussage würde eine leere Spalte nach der ersten Spalte einfügen.

4voto

Talis Punkte 283

Dies funktioniert auch für mehrere Spalten:

df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
>>> df
   A  B
0  1  2
1  2  3
2  3  4

df1 = pd.DataFrame(columns=['C','D','E'])
df = df.join(df1, how="outer")

>>>df
    A   B   C   D   E
0   1   2   NaN NaN NaN
1   2   3   NaN NaN NaN
2   3   4   NaN NaN NaN

Dann tun Sie, was Sie mit den Spalten machen möchten pd.Series.fillna(),pd.Series.map() etc.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X