Bauen pandas-Daten-frame aus der Liste der numpy-arrays
Frage ich mich, ob es einen einfachen Weg für die offensichtliche Aufgabe erzeugen Sie ein pandas DataFrame aus einer Liste mit numpy-arrays, wo die Spalten des arrays. Das Standard-Verhalten scheint, lassen Sie die Felder, werden die Zeilen, die ich Total nicht verstehen, warum. Hier ist ein kurzes Beispiel:
names = ['data1', 'data2', 'data3']
data = [np.arange(10) for _ in names]
df = pd.DataFrame(data=data, columns=names)
Dieser gibt einen Fehler zurück, der angibt, pandas rechnet mit 10 Spalten.
Wenn ich
df = pd.DataFrame(data=data)
Bekomme ich einen DataFrame mit 10 Spalten und 3 Zeilen.
Gegeben, dass es im Allgemeinen viel schwieriger zu append-Zeilen als Spalten zu einem DataFrame ich wundere mich über dieses Verhalten, z.B. sagen wir mal ich schnell möchten setzen eine 4. Daten-array in den DataFrame ich möchte die Daten organisiert in Spalten zu tun
df['data4'] = new_array
Wie kann ich schnell bauen die DataFrame ich will?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde
.from_items
:gibt
Sollte das auch schneller sein als die Umsetzung:
Hinzufügen einer vierten Spalte wird dann auch ziemlich einfach:
gibt
EDIT:
Wie erwähnt von @jezrael, eine Dritte option wäre (Vorsicht: Reihenfolge nicht garantiert)
Timing:
pd.DataFrame(dict(zip(names, data)), columns=names)
columns=names
Teil ist nicht einmal erforderlich; dann ist es so schnell, wie diefrom_items
version.dict
- Reihenfolge ist nicht garantiert, so müssen Sie spezifizieren. Versuchen Sie, änderndata1
zudata7
für den Unterschied 😉from_items
version.Es gibt viele Möglichkeiten, um Ihr problem zu lösen, aber der einfachste Weg scheint zu sein
df.T
(T
als Kurzform fürpandas.DataFrame.transponieren
):AssertionError
angehoben, durch das default-Verhalten, zu.