Anhängen an einen leeren DataFrame in Pandas?

212

Ist es möglich, an einen leeren Datenrahmen anzuhängen, der keine Indizes oder Spalten enthält?

Ich habe versucht, dies zu tun, erhalte aber am Ende immer wieder einen leeren Datenrahmen.

z.B

df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)

Das Ergebnis sieht folgendermaßen aus:

Empty DataFrame
Columns: []
Index: []
ericmjl
quelle
Beantwortete eine ähnliche Frage hier: stackoverflow.com/questions/13784192/… . im Grunde so etwasnewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
Geekidharsh
Was anhängen? Ein einzelner Wert? eine Python-Liste? eine Pandas-Serie? Ein anderer Datenrahmen? Ihr nachfolgender Beispielkommentar deutet darauf hin, dass Sie einen anderen Datenrahmen meinen - geben Sie also bereits einen Datenrahmen in Ihrem Beispielcode an :)
smci
Und wenn Sie sagen "Das Ergebnis sieht so aus", hoffe ich, dass Sie es nicht direkt versuchen print(df.append(data)), weil append()immer None in Python zurückgegeben wird
smci

Antworten:

388

Das sollte funktionieren:

>>> df = pd.DataFrame()
>>> data = pd.DataFrame({"A": range(3)})
>>> df.append(data)
   A
0  0
1  1
2  2

Aber das appendgeschieht nicht an Ort und Stelle , so dass Sie die Ausgabe haben zu speichern , wenn Sie es wollen:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2
DSM
quelle
8
Danke dir! Das hat funktioniert! Ich wusste nicht, dass ich die Ausgabe speichern musste ... Ich hätte die Dokumentation wahrscheinlich besser lesen sollen, aber ich weiß es zu schätzen, @DSM!
Ericmjl
9
Ich vergesse immer, dass Sie es zuweisen müssen!
Andy B
66
Eigentlich ist das Anhängen nicht an Ort und Stelle die wichtigste Information hier;)
Refuzee
6
Keine Ahnung, warum Pandas Beispiele das nicht zeigen. Danke für Ihre Hilfe!
Drew Szurko
2
Beachten Sie, dass Sie zumindest im Juni 2018, wenn Sie möchten, dass sich die neuen Zeilen automatisch indizieren, df.append (data, ignore_index = True) schreiben sollten. Danke für die tolle Antwort!
Adam B
98

Wenn Sie eine Zeile hinzufügen möchten, können Sie ein Wörterbuch verwenden:

df = pd.DataFrame()
df = df.append({'name': 'Zed', 'age': 9, 'height': 2}, ignore_index=True)

was dir gibt:

   age  height name
0    9       2  Zed
dval
quelle
Geringe Leistung, insbesondere beim Umgang mit großen Datenmengen
Raullalves
2
Können Sie das in Beziehung zu den anderen vorgeschlagenen Alternativen setzen, @raullalves?
Bouncner
23

Sie können die Daten folgendermaßen zusammenfassen:

InfoDF = pd.DataFrame()
tempDF = pd.DataFrame(rows,columns=['id','min_date'])

InfoDF = pd.concat([InfoDF,tempDF])
Tief
quelle
Danke, ich habe das Concat ausprobiert. Aber warum sowohl anhängen als auch concat, wenn sie den gleichen Job machen können
Nitesh Kumar
Dieser Thread könnte eine gute Erklärung geben: stackoverflow.com/questions/15819050/…
Deepish