Ich habe versucht:Wie bekomme ich die erste Spalte eines Pandas DataFrame als Serie?
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
Und s
einen Datenrahmen erhält, keine Serie.
Ich habe versucht:Wie bekomme ich die erste Spalte eines Pandas DataFrame als Serie?
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
Und s
einen Datenrahmen erhält, 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'>
>>>
in 0.11
In [7]: df.iloc[:,0]
Out[7]:
0 1
1 2
2 3
3 4
Name: x, dtype: int64
Dies ist die kompatibelste Version mit den neuen Versionen und auch mit den alten Versionen. Und wahrscheinlich das effizienteste, da das Entwicklerteam diesen Ansatz offiziell unterstützt. – gaborous
Ist das nicht die einfachste Art und Weise?
von 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
In diesem speziellen Fall kennen Sie den Namen der ersten Spalte ("x"), aber was die Frage bedeutete, war: "Wie kann ich auf die erste Spalte, REGARDLESS des Namens zugreifen". Außerdem ist der Zugriff auf Spalten wie diese ('df.x') nicht generisch - was ist, wenn der Spaltenname Leerzeichen enthält? Was passiert, wenn der Name der Spalte mit dem Attributnamen von 'DataFrame' übereinstimmt? Es ist allgemeiner, auf Spalten mit '__getitem__' zuzugreifen (d. H. Wie folgt:' df ["x"] '). – ponadto
Funktioniert auch nicht, wenn der Spaltenkopf z. Räume darin. –
Wie kann ich die Spalte "y" als Reihe und die Spalte "x" als Index erhalten? – LWZ
'df.set_index ('x'). Y' – herrfz
Wäre es wert, die .iloc-Alternative hinzuzufügen (wie von Jeff weiter unten auf dieser Seite vorgeschlagen), da es bei Vorhandensein von Spalten mit Zahlen für Namen nicht mehrdeutig ist. –