簡體   English   中英

pandas groupby 是否通過引用或值傳遞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM