2017-08-08 132 views
5

我有以下代碼...由於某些原因導致'key'列消失。我還注意到其他時候,關鍵列似乎「隨機」消失。我試圖隔離案件,這是一個。在在Pandas中,爲什麼groupby'key'列在這種情況下消失

G N 
1 b 2 
2 b 3 

第二print groupByObj.get_group('b')結果:

N 
1 2 
2 3 

爲什麼會出現「鍵

我usinng大熊貓版本0.20.1

DF = pd.DataFrame([['a', 1], ['b', 2], ['b', 3]], columns = ['G', 'N']) 
groupByObj = DF.groupby('G') 
print groupByObj.get_group('b') 
groupByObj.sum() 
print groupByObj.get_group('b') 

第一print groupByObj.get_group('b')結果'列('G')在運行後消失

+0

附加信息:如果在創建對象時傳遞'as_index = False',則不會發生'groupByObj = DF.groupby('G',as_index = False)'。 – ayhan

+0

這看起來像一個錯誤,似乎聚合操作以某種方式改變或在'groupby'對象上引入某種緩存操作。這發生在我的機器上,使用熊貓版本'0.20.3'我會在[github]上發佈這個問題(https://github.com/pandas-dev/pandas/issues)。一旦調用'sum'然後調用'get_group',就會發生這種情況。對我來說,它看起來像第一個輸出是不正確的,'G'列應該成爲索引,但它不會執行聚合。 – EdChum

+0

再看一遍,我認爲第一個輸出是錯誤的,'G'列應該形成索引,這似乎並沒有發生,直到你執行聚合,所以'get_group'沒有正確地做到這一點 – EdChum

回答

1

這是熊貓的錯誤​​,在所討論的:

後者仍然是開放的。

從閱讀在GitHub上了一下,如在評論中提到的,似乎第二輸出想要的行爲,並通過添加以下行pandas.core.groupby._GroupBy#_set_group_selectionsum情況下獲得:

self._reset_cache('_selected_obj') 

由於此調用在調用sum(以及其他一些函數)時發生,因此此G列在第一個get_group調用中仍可見。順便說一句 - 在調用mean以及一些其他功能時也不會執行重置。看起來這個bug比想象的更全面,並沒有通過簡單的緩存重置來解決。