像常规列一样访问Pandas索引

问题描述 投票:2回答:2

我有一个带有命名索引的Pandas DataFrame。我想把它传递给一个带有DataFrame,列名和其他东西的代码,然后做一大堆涉及该列的工作。只有在这种情况下,我想要突出显示的列是索引,但是为这段代码提供索引的标签不起作用,因为您无法像常规列一样提取索引。例如,我可以像这样构造一个DataFrame:

import pandas as pd, numpy as np

df=pd.DataFrame({'name':map(chr, range(97, 102)), 'id':range(10000,10005), 'value':np.random.randn(5)})
df.set_index('name', inplace=True)

这是结果:

         id     value
name                 
a     10000  0.659710
b     10001  1.001821
c     10002 -0.197576
d     10003 -0.569181
e     10004 -0.882097

现在我怎样才能进入name专栏?

print(df.index)  # No problem
print(df['name'])  # KeyError: u'name'

我知道有一些解决方法,比如复制列或将索引更改为其他内容。但是有什么更清洁的东西,比如某种形式的列访问,以与其他所有方式相同的方式处理索引?

python pandas dataframe indexing series
2个回答
2
投票

索引在熊猫中具有特殊意义。它用于优化特定操作,可用于各种方法,如合并/连接数据。因此,做出选择:

  • 如果它只是“另一列”,请使用reset_index并将其视为另一列。
  • 如果它真的用于索引,请将其保留为索引并使用df.index

我们不能为你做出这个选择。它应该取决于基础数据的结构以及您打算如何分析数据。

有关使用数据框索引的更多信息,请参阅:


0
投票

您可以将索引复制到普通列,执行某些操作然后删除列,而不是使用reset_index,例如:

df['tmp'] = df.index
# do stuff based on df['tmp']
del df['tmp']
© www.soinside.com 2019 - 2024. All rights reserved.