如何检索MultiIndex DataFrame的视图

时间:2013-11-03 22:13:55

标签: python pandas

这个问题的灵感来自this question。我有同样的问题,通过选择更新MultiIndex DataFrame。 Pandas 0.13中的drop_level=False解决方案将允许我获得相同的结果,但我仍然想知道为什么我无法从MultiIndex DataFrame获取视图。换句话说,为什么这不起作用?:

>>> sat = d.xs('sat', level='day', copy=False)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2248, in xs
    raise ValueError('Cannot retrieve view (copy=False)')
ValueError: Cannot retrieve view (copy=False)

当然可能只是因为没有实施,但是有原因吗?是以某种方式模糊或不可能实现?返回视图对我来说比返回副本然后更新原始文件更直观。我查看了源代码,似乎明确检查了这种情况以引发错误。

或者,是否可以从任何其他索引方法获得相同类型的视图?我已经尝试但没有成功。

[编辑] 讨论了一些可能的实现here。我想上面的最后一个问题我想知道当前最佳解决方案是什么,以索引到任意多索引切片和横截面。

1 个答案:

答案 0 :(得分:0)

在多dtype帧上这根本不可能;即使是一个dtyped框架,也只有2个numpy,这使得它不确定。

即使使用xs可以查看视图,也基本上总是返回副本。问题是,当你正在处理副本时(或者反过来可能是真的),很容易尝试修改这种思想,即你实际上正在修改基础数据。

(fyi此错误也会在0.13中删除,如果您尝试修改则会引发/警告)

请参阅此here了解更改。