熊猫可以使用列作为索引吗?

新手上路,请多包涵

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

 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]

原文由 Chan Austin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 224
2 个回答

是的,使用 pandas.DataFrame.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]

原文由 Michael Hoff 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 famargar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题