gpt4 book ai didi

python - 如何引用 Pandas 数据框的索引?

转载 作者:太空狗 更新时间:2023-10-29 20:37:12 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框,我在其中指定了一些列作为索引:

planets_dataframe.set_index(['host','name'], inplace=True)

并希望能够在各种上下文中引用这些索引。使用索引名称在查询中效果很好

planets_dataframe.query('host == "PSR 1257 12"')

但是如果尝试使用它来获取索引值的列表,就像我在它是列时那样,会导致错误

planets_dataframe.name
#AttributeError: 'DataFrame' object has no attribute 'name'

或者当它是“常规”列时我可以使用它来列出结果

planets_dataframe.query('30 > mass > 20 and discoveryyear > 2009')['name']
#KeyError: u'no item named name'

如何引用我用作索引的数据框的“列”?


set_index 之前:

planets_dataframe.columns
# Index([u'name', u'lastupdate', u'temperature', u'semimajoraxis', u'discoveryyear', u'calculated', u'period', u'age', u'mass', u'host', u'verification', u'transittime', u'eccentricity', u'radius', u'discoverymethod', u'inclination'], dtype='object')

set_index之后:

planets_dataframe.columns
#Index([u'lastupdate', u'temperature', u'semimajoraxis', u'discoveryyear', u'calculated', u'period', u'age', u'mass', u'verification', u'transittime', u'eccentricity', u'radius', u'discoverymethod', u'inclination'], dtype='object')

最佳答案

我觉得你对什么是索引有点误解。您不只是将列“指定”为索引;也就是说,您不只是用“这是一个索引”的信息“标记”某些列。索引是一个单独的数据结构,可以保存甚至不存在于列中的数据。如果您执行 set_index,您这些列移入索引,因此它们不再作为常规列存在。这就是为什么您不能再按照您提到的方式使用它们的原因:它们不再存在了。

您可以做的一件事是,在使用 set_index 时,传递 drop=False 以告诉它除了将列放入索引之外,还保留列作为列 (有效地将它们复制到索引而不是移动它们),例如,df.set_index('SomeColumn', drop=False)。但是,您应该知道索引和列仍然是不同的,因此例如,如果您修改列值,这不会影响索引中存储的内容。

结果是索引并不是真正的 DataFrame 列,因此如果您希望能够将某些数据同时用作索引和列,则需要在两个地方都复制它。这个问题有一些讨论here .

关于python - 如何引用 Pandas 数据框的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23314564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com