Ich habe es versucht:
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
Und s
bekommt einen DataFrame, keine Serie.
>>> import pandas as pd
>>> df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
>>> df
x y
0 1 4
1 2 5
2 3 6
3 4 7
>>> s = df.ix[:,0]
>>> type(s)
<class 'pandas.core.series.Series'>
>>>
================================================== =========================
AKTUALISIEREN
Wenn Sie dies nach Juni 2017 lesen, ix
ist es in Pandas 0.20.2 veraltet, verwenden Sie es also nicht. Verwenden Sie loc
oder iloc
stattdessen. Siehe Kommentare und andere Antworten auf diese Frage.
df.set_index('x').y
.iloc
war ich damals noch nicht da. 2016 ist die richtige Antwort Jeffs (schließlich ist erpandas
Gott, wohlgemerkt ;-)). Ich bin mir nicht sicher, wie SO bei der Aktualisierung von Antworten aufgrund von API-Änderungen vorgeht. Ich bin ehrlich überrascht von der Anzahl der Stimmen für diese Antwort, dachte nicht, dass es für die Leute so nützlich war ...ix
war in Version 0.20 veraltet .ix
sollte nicht mehr verwendet werden, verwenden Sieiloc
stattdessen :s = df.ix[:,0]
. In diesem Beitrag finden Sie einen Vergleich voniloc
undix
.Sie können die erste Spalte als Serie erhalten, indem Sie den folgenden Code verwenden:
quelle
x[x.columns[x.columns.size-1]]
Ab v0.11 +, ... verwenden
df.iloc
.quelle
Ist das nicht der einfachste Weg?
Nach Spaltenname:
quelle
df.x
) nicht generisch - was ist, wenn der Spaltenname Leerzeichen enthält? Was ist, wenn der Name der Spalte mit demDataFrame
Attributnamen -s übereinstimmt ? Es ist allgemeiner, mit__getitem__
(z. B. :) auf Spalten zuzugreifendf["x"]
.Dies funktioniert hervorragend, wenn Sie eine Serie aus einer CSV-Datei laden möchten
quelle
Wo
i
ist die Position / Nummer der Spalte (ab 0 ).Also,
i = 0
ist für die erste Spalte.Sie können die letzte Spalte auch mit abrufen
i = -1
quelle