2016-12-08 3 views
0

Wenn ich df.update() für einen Frame mache, für den der Schlüssel nicht existiert, was ist der sauberste Weg, den ich hinzufügen kann?Pandas einfügen oder aktualisieren?

Etwas wie:

try: 
    df.update(new_data) 
except: 
    df.insert(new_data) 
+1

warum nicht einfach test 'wenn Schlüssel in df.columns: '? Ist die neue_Daten ebenfalls gleich groß? d.h. die gleiche Anzahl von Reihen? warum nicht einfach überschreiben, wenn dies der Fall ist, oder eine neue Spalte mit den neuen Daten erstellen? – EdChum

+1

[Einfacher nach Vergebung als Erlaubnis fragen] (https://docs.python.org/3/glossary.html#term-eafp) ist der bevorzugte Python-Weg –

Antwort

0

Es ist unklar, was der eigentliche Anwendungsfall hier, aber erstens können Sie testen, ob der Schlüssel bereits vorhanden ist durch in auf den Säulen Aufruf:

In [61]: 
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc')) 
df 

Out[61]: 
      a   b   c 
0 -0.968358 0.666118 0.758028 
1 -0.805671 -0.994780 0.624423 
2 0.449329 0.768457 -0.311637 
3 -0.793448 1.258319 -0.924384 
4 1.698867 -0.624939 -0.167027 

In [62]: 
'd' in df.columns 

Out[62]: 
False 

Außer, wenn die Spalte nicht existiert, dann können Sie es einfach hinzufügen, ob es ein Skalarwert ist oder das Array die gleiche Länge:

In [63]: 
df['d'] = 10 
df 

Out[63]: 
      a   b   c d 
0 -0.968358 0.666118 0.758028 10 
1 -0.805671 -0.994780 0.624423 10 
2 0.449329 0.768457 -0.311637 10 
3 -0.793448 1.258319 -0.924384 10 
4 1.698867 -0.624939 -0.167027 10 
Verwandte Themen