熊猫series有两个密切相关的属性:Series.index和Series.index.values。
这两种中的第一种是返回目前某些熊猫指数类型的指数。它是可变的,可以用来更改系列的索引(这是一件好事)。
第二个返回一个numpy.ndarray。但是,它是不可变的,并且不管随后对索引的更改如何,它都保留原来的索引值。
我的问题是:不可变的Series.index.values的目的是什么?
编辑:
嗯。忽略这个问题--我不能重复我昨晚看到的s.index.values令人困惑的行为。
发布于 2013-12-30 12:46:35
几乎所有.values属性(系列属性、DataFrame属性、面板属性、索引对象属性)都返回底层的numpy数据。索引本身是围绕这些数据进行的复杂包装,提供了其他方便的功能,例如(从this answer获取的示例this answer):
>>> 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])例如,当您用一些可迭代的方法更新索引时,会在遮罩下创建一个新的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)https://stackoverflow.com/questions/20839325
复制相似问题