首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pandas可以使用列作为索引吗?

pandas可以使用列作为索引吗?
EN

Stack Overflow用户
提问于 2016-07-23 21:39:10
回答 3查看 246.8K关注 0票数 159

我有一个这样的电子表格:

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-23 21:42:12

是的,使用set_index,您可以将Locality作为行索引。

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

如果未提供inplace=Trueset_index将返回修改后的数据帧作为结果。

示例:

> 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]
票数 290
EN

Stack Overflow用户

发布于 2017-09-29 18:56:31

您可以使用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]
票数 15
EN

Stack Overflow用户

发布于 2021-03-27 17:16:37

另一种简单的方法是将列分配给数据框索引

data = {
  'Locality': ['ABBOTSFORD', 'ABERFELDIE', 'AIREYS INLET'],
  '2005': [427000, 534000, 459000 ],
  '2006': [448000, 448000, 448000],
  '2007': [602500, 602500, 602500],
  '2008': [600000, 710000, 517500],
  '2009': [638500, 775000, 512500]
}

df = pd.DataFrame(data)

# set the locality column as the index
df.index = df['Locality']

如果不再需要Locality列作为列,只需删除它即可

df.drop('Locality', axis=1)

你最终会得到

              | 2005     | 2006   | 2007   | 2008   | 2009
Locality      |-------------------------------------------              
ABBOTSFORD    | 427000   | 448000 | 602500 | 600000 | 638500
ABERFELDIE    | 534000   | 448000 | 602500 | 710000 | 775000
AIREYS INLET  | 459000   | 448000 | 602500 | 517500 | 512500
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38542419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档