2016-08-08 11 views
0

Nach meinem Verständnis von Python können veränderbare Verweise auf Daten innerhalb eines Funktionsumfangs geändert werden und spiegeln die Änderung außerhalb wider. BetrachtenDatenrahmen append nicht sichtbar außerhalb des Funktionsbereichs

1) eine Liste: Doch unter dem Verhalten verwirrt mich

my_list = [] 
def checklistappend(list): 
    list.append(1) 
checklistappend(my_list) 
print (my_list) 

erwartet als die Variable my_list = [1]

2) jedoch das folgende Szenario mit einem Datenrahmen:

In diesem Fall ist das Ergebnis von my_df immer noch ein leerer Datenrahmen mit Spalten "A", der nicht intuitiv ist und die einzige Erklärung, die ich finden kann, ist t Die Datenrahmenanhang-Methode weist intern eine neue Variable zu, was das Verhalten ist, das ich nicht erwarten würde.

Ich benutze Python 2.7.2 mit Pandas 0.13.1, von denen jede nicht in meiner Kontrolle ist.

Gibt es eine andere Möglichkeit, dasselbe Ziel zu erreichen, ohne so viele Kopien zu erstellen?

+0

Vielleicht dumme Frage, aber haben Sie versucht, ohne die Funktion? Ich meine, gelten für my_df direclty –

+1

[append] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.append.html) ist keine Inplace-Operation. Es gibt einen neuen Datenrahmen zurück. Sie verändern also das Objekt nicht wirklich. – ayhan

Antwort

0

Sie müssen den Ausgang zurück auf df zuweisen.

df = df.append([1]) 
Verwandte Themen