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 

我不想手动交换列的行。 是否有可能使用pandas阅读数据列表如下:

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

是的,通过set_index你可以使Locality行索引。

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

如果没有提供set_index inplace=True ,则set_index作为结果返回修改的dataframe。

例:

 > 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] 

您可以使用set_index按照说明更改索引。 你不需要用列手动交换行,在pandas中有一个转置( 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 

那么您可以获取dataframe列值并将其转换为列表:

 > newdf['ABBOTSFORD'].values.tolist() [427000, 448000]