2013-03-12 5 views

Antwort

79
>>> 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'> 
>>> 
+0

Wie kann ich die Spalte "y" als Reihe und die Spalte "x" als Index erhalten? – LWZ

+4

'df.set_index ('x'). Y' – herrfz

+3

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. –

59

Sie können die erste Spalte als eine Reihe von folgendem Code erhalten:

x[x.columns[0]] 
+0

wie kann ich die letzte Spalte wie das? – Polly

+1

x [x.columns [-1]] – user48956

+0

Die anderen funktionieren auch gut, aber dieser scheint intuitiver. – pshep123

34
in 0.11 

In [7]: df.iloc[:,0] 
Out[7]: 
0 1 
1 2 
2 3 
3 4 
Name: x, dtype: int64 
+0

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

7

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 
+5

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

+0

Funktioniert auch nicht, wenn der Spaltenkopf z. Räume darin. –