Antworten:
>>> 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.
.iloc
war ich damals noch nicht da. 2016 ist die richtige Antwort Jeffs (schließlich ist er pandas
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
sollte nicht mehr verwendet werden, verwenden Sie iloc
stattdessen : s = df.ix[:,0]
. In diesem Beitrag finden Sie einen Vergleich von iloc
und ix
.
Sie können die erste Spalte als Serie erhalten, indem Sie den folgenden Code verwenden:
x[x.columns[0]]
x[x.columns[x.columns.size-1]]
Ab v0.11 +, ... verwenden df.iloc
.
In [7]: df.iloc[:,0]
Out[7]:
0 1
1 2
2 3
3 4
Name: x, dtype: int64
Ist das nicht der einfachste Weg?
Nach Spaltenname:
In [20]: df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
In [21]: df
Out[21]:
x y
0 1 4
1 2 5
2 3 6
3 4 7
In [23]: df.x
Out[23]:
0 1
1 2
2 3
3 4
Name: x, dtype: int64
In [24]: type(df.x)
Out[24]:
pandas.core.series.Series
df.x
) nicht generisch - was ist, wenn der Spaltenname Leerzeichen enthält? Was ist, wenn der Name der Spalte mit dem DataFrame
Attributnamen -s übereinstimmt ? Es ist allgemeiner, mit __getitem__
(z. B. :) auf Spalten zuzugreifen df["x"]
.
Dies funktioniert hervorragend, wenn Sie eine Serie aus einer CSV-Datei laden möchten
x = pd.read_csv('x.csv', index_col=False, names=['x'],header=None).iloc[:,0]
print(type(x))
print(x.head(10))
<class 'pandas.core.series.Series'>
0 110.96
1 119.40
2 135.89
3 152.32
4 192.91
5 177.20
6 181.16
7 177.30
8 200.13
9 235.41
Name: x, dtype: float64
df[df.columns[i]]
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
df.set_index('x').y