这个问题的灵感来自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。我想上面的最后一个问题我想知道当前最佳解决方案是什么,以索引到任意多索引切片和横截面。
答案 0 :(得分:0)
在多dtype帧上这根本不可能;即使是一个dtyped框架,也只有2个numpy,这使得它不确定。
即使使用xs
可以查看视图,也基本上总是返回副本。问题是,当你正在处理副本时(或者反过来可能是真的),很容易尝试修改这种思想,即你实际上正在修改基础数据。
(fyi此错误也会在0.13中删除,如果您尝试修改则会引发/警告)
请参阅此here了解更改。