2016-07-23 13 views
20

私はこのようなスプレッドシートを持っている:私は手動で行と列を交換する必要はありませんpandasはインデックスとして列を使用できますか?

Locality 2005 2006 2007 2008 2009 

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

を。あなたがLocalityあなたの行インデックスを作ることができる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

[パンダデータフレームのオブジェクトに索引を再定義]の可能な重複(https://stackoverflow.com/questions/10457584/redefining-the-index-in-a-pandas-dataframe-object) –

+0

私は同意しない。質問の本質は似ていますが(したがって回答も)、人々は「インデックスに列を作ろう」と思うときにこの質問のようなものを探します。 – mhoff

答えて

49

:このようリストにデータを読み込むパンダを使用することが可能である可能性があります。 inplace=Trueが設けられていない場合

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

は、​​結果として変性データフレームを返します。

例:

> 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

​​を使用して、すでに説明したようにあなたは、インデックスを変更することができます。 手動列と行を交換する必要はありません、転置(data.T)あなたのためにそれを行うパンダのメソッドがあります:

> 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 

、あなたはデータフレームの列の値を取得し、リストにそれらを変換することができますが、 :

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

[427000, 448000] 
関連する問題