這個問題的靈感來自於this question。我遇到了同樣的問題,通過選擇更新MultiIndex DataFrame。 Pandas 0.13中的drop_level=False
解決方案將使我獲得相同的結果,但我仍然想知道爲什麼我無法從MultiIndex DataFrame中獲取視圖。換句話說,爲什麼這樣不行?:如何檢索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。我想用上面的最後一個問題,我想知道什麼目前最好的解決方案是索引到任意multiindex切片和橫截面。
只是爲了確保我理解正確:您是說由於低級實施細節而無法實現?雖然我們談論這個話題 - 是否有任何討論允許通過字典索引,鍵是索引標籤?我的代碼被設置爲從用戶那裏得到一個字典,但我必須做一些醜陋的轉換才能變成索引元組和標籤列表。就像現在似乎沒有一種使用MultiIndex DataFrames子集的優雅方法。 – ontologist
一個視圖本質上是指向另一個數據塊的開始/停止指針。通常不可能用任意的(幻想)索引來做到這一點,這本質上就是你要求的。作爲第二個問題,我不確定你問什麼。 – Jeff
感謝您的回答,這很有道理。我一直在尋找這個主題,我認爲我的第二個問題是指[提升請求]中提出的問題(https://github.com/pydata/pandas/issues/4036)。由於它似乎是一個實施的問題,我會跟隨大熊貓,希望有一天我會有技能貢獻自己。 – ontologist