pandas series
有两个密切相关的属性:Series.index
和Series.index.values
。
这两个中的第一个返回一些pandas索引类型的当前索引。它是可变的,可以用来改变系列的索引(一件好事)。
第二个返回numpy.ndarray
。但是,它是不可变的,并且无论后续的索引更改如何,都会保留原始索引值。
我的问题:非变异Series.index.values
的意图是什么?
修改 的
嗯。只是忽略这个问题 - 我不能重复我昨晚看到的s.index.values的混乱行为。
答案 0 :(得分:3)
几乎所有.values
属性(Series,DataFrame,Panel,Index对象)都会返回基础numpy数据。索引本身是围绕此数据的复杂结论,提供了额外的便利功能,例如(从this answer获取的示例DataFrame):
>>> s = df['A']
>>> s.index
MultiIndex
[(u'one', 1), (u'one', 2), (u'one', 3), (u'two', 1), (u'two', 2), (u'two', 3)]
>>> s.index.values
array([('one', 1L), ('one', 2L), ('one', 3L), ('two', 1L), ('two', 2L),
('two', 3L)], dtype=object)
>>> s.index.get_indexer([('one',1), ('two', 2)])
array([0, 4])
例如,当您使用某个iterable更新索引时,会在引擎盖下创建一个新的Index对象:
>>> s.index = np.arange(6)
>>> s.index
Int64Index([0, 1, 2, 3, 4, 5], dtype=int64)
>>> s.index.get_indexer([0,4])
array([0, 4])
>>> s.index.values
array([0, 1, 2, 3, 4, 5], dtype=int64)