2016-07-23 14 views
20

Ich habe eine Tabelle wie folgt aus:Können Pandas die Spalte als Index verwenden?

Locality 2005 2006 2007 2008 2009 

ABBOTSFORD 427000 448000 602500 600000 638500 
ABERFELDIE 534000 600000 735000 710000 775000 
AIREYS INLET459000 440000 430000 517500 512500 

Ich möchte nicht manuell mit der Zeile, die Spalte tauschen. Könnte es möglich sein Pandas Lesen von Daten auf einer Liste, da dies zu nutzen: mit set_index

data['ABBOTSFORD']=[427000,448000,602500,600000,638500] 
data['ABERFELDIE']=[534000,600000,735000,710000,775000] 
data['AIREYS INLET']=[459000,440000,430000,517500,512500] 
+0

Mögliches Duplikat [den Index in einem Pandas Dataframe Objekt Neudefinition] (https://stackoverflow.com/questions/10457584/redefining-the-index-in-a-pandas-dataframe-object) –

+0

Ich würde dem widersprechen. Obwohl das Wesen der Frage ähnlich ist (und daher auch die Antwort ist), werden die Leute nach etwas wie dieser Frage suchen, wenn sie eine Spalte zum Index machen wollen. – mhoff

Antwort

49

Ja, können Sie Locality Ihre Zeilenindex machen.

data.set_index('Locality', inplace=True) 

Wenn inplace=True nicht vorgesehen ist, set_index gibt die modifizierten Datenrahmen als Ergebnis.

Beispiel:

> import pandas as pd 
> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000], 
        ['ABERFELDIE', 534000, 600000]], 
        columns=['Locality', 2005, 2006]) 

> df 
    Locality 2005 2006 
0 ABBOTSFORD 427000 448000 
1 ABERFELDIE 534000 600000 

> df.set_index('Locality', inplace=True) 
> df 
       2005 2006 
Locality     
ABBOTSFORD 427000 448000 
ABERFELDIE 534000 600000 

> df.loc['ABBOTSFORD'] 
2005 427000 
2006 448000 
Name: ABBOTSFORD, dtype: int64 

> df.loc['ABBOTSFORD'][2005] 
427000 

> df.loc['ABBOTSFORD'].values 
array([427000, 448000]) 

> df.loc['ABBOTSFORD'].tolist() 
[427000, 448000] 
2

Sie können den Index ändern, wie bereits set_index Verwendung erläutert. Sie müssen nicht manuell tauschen Zeilen mit Spalten, gibt es eine Transponierung (data.T) -Methode in Pandas, dass es für Sie tut:

> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000], 
        ['ABERFELDIE', 534000, 600000]], 
        columns=['Locality', 2005, 2006]) 

> newdf = df.set_index('Locality').T 
> newdf 

Locality ABBOTSFORD ABERFELDIE 
2005  427000  534000 
2006  448000  600000 

dann können Sie die Datenrahmen Spaltenwerte holen und sie in eine Liste umwandeln :

> newdf['ABBOTSFORD'].values.tolist() 

[427000, 448000] 
Verwandte Themen