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

2024-05-16 01:13:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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]

Tags: 数据pandas列表data手动电子表格localityinlet
1条回答
网友
1楼 · 发布于 2024-05-16 01:13:00

是的,使用set_index可以使Locality成为行索引。

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

如果未提供inplace=True,则set_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]
网友
2楼 · 发布于 2024-05-16 01:13:00

从Pandas的电子表格中读取数据时,可以使用index_col参数设置列索引。

以下是我的解决方案:

  1. 首先,将熊猫作为pd进口: import pandas as pd

  2. 使用pd.Read_excel()读入文件名(如果电子表格中有数据),并通过指定index_col参数将索引设置为“Locality”。

    df = pd.read_excel('testexcel.xlsx', index_col=0)

    在此阶段,如果出现“no module named xlrd”错误,请使用pip install xlrd安装它。

  3. 要进行目视检查,请使用df.head()读取数据帧,它将打印以下输出 sc

  4. 现在您可以获取dataframe所需列的值并打印它

    sc2

网友
3楼 · 发布于 2024-05-16 01:13:00

您可以按照已经使用set_index的说明更改索引。 您不需要手动将行与列交换,pandas中有一个transpose(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]

相关问题 更多 >