0

这个问题的灵感来自这个问题。我有同样的问题,通过选择更新 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)

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

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

[编辑]这里讨论了一些潜在的实现。我想对于上面的最后一个问题,我想知道当前最好的解决方案是索引任意多索引切片和横截面。

4

1 回答 1

0

在多 dtype 框架上,这根本不可能;即使是单个 dtyped 框架,它也会增加 2 numpy,这使得它具有不确定性。

即使视图可以使用xs. 问题是很容易尝试修改这种想法,即实际上您正在修改基础数据,而实际上您正在处理副本(或者反之亦然)。

(仅供参考,此错误在 0.13 中也已删除,如果您尝试修改它,则会引发/警告)

在这里看到这个改变。

于 2013-11-03T23:59:26.557 回答