[英]Does pandas groupby pass by reference or value?
假設我有一個 Pandas DataFrame數據,我想根據特定列col將其拆分
def split_by_column(data, column):
chunk_list = [(k,g) for k, g in data.groupby(column)]
return dict(chunk_list)
collection = split_by_column(data, 'col')
這樣我以后就可以輕松地訪問和應用函數到這個集合。
例如,如果我有一個同時具有數據和集合作為實例變量的對象,我是否在內存中有兩個單獨的數據副本,或者字典是否包含對數據中適當夾頭的引用?
我試過這個:
data=pd.DataFrame({'a':[1,2,3,4], 'b':[6,9,8,9]})
print('data initial:',data)
def split_by_column(data, column):
chunk_list = [(k,g) for k, g in data.groupby(column)]
return dict(chunk_list)
collection = split_by_column(data, 'b')
print('collection initial:',collection)
輸出是:
data initial: a b
0 1 6
1 2 9
2 3 8
3 4 9
collection initial: {6: a b
0 1 6, 8: a b
2 3 8, 9: a b
1 2 9
3 4 9}
如果我現在更改數據
data.at[3,'a']=5
並再次打印數據和收集,輸出是這樣的:
data new: a b
0 1 6
1 2 9
2 3 8
3 5 9
collection new: {6: a b
0 1 6, 8: a b
2 3 8, 9: a b
1 2 9
3 4 9}
由於我也剛剛開始探索熊貓,我無法告訴您底層機制是什么,但是由於值 5 僅出現在數據框中,而不出現在 dict 中,因此我得出結論,您有兩個不同的副本你的數據。
我希望,這對你有幫助。 最好的,lepakk
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.