我在修改重複的熊貓DataFrame時遇到了一些麻煩,而且沒有將修改應用於原始DataFrame的重複和。python熊貓中的DataFrame.apply改變了原始數據幀和重複數據幀
下面是一個例子。說我創建的詞典列表的任意數據框:「A」使用應用
In [67]: d = [{'a':3, 'b':5}, {'a':1, 'b':1}]
In [68]: d = DataFrame(d)
In [69]: d
Out[69]:
a b
0 3 5
1 1 1
然後我給你的「d」數據幀變量「e」和適用於一些任意數學列:
In [70]: e = d
In [71]: e['a'] = e['a'].apply(lambda x: x + 1)
In [72]: e # duplicate DataFrame
Out[72]:
a b
0 4 5
1 2 1
In [73]: d # original DataFrame, notice the alterations to frame 'e' were also applied
Out[73]:
a b
0 4 5
1 2 1
我已經搜查b:在應用函數顯然既適用於重複數據框「e」和原始數據幀「d」,這是我不能爲我的生活出
問題出現大熊貓的文檔和谷歌因爲這個原因會這樣,但無濟於事。我根本無法理解這裏發生了什麼。
我也嘗試了使用元素操作的數學運算(例如,e['a'] = [i + 1 for i in e['a']]
),但問題仍然存在。在我不知道的熊貓DataFrame類型中是否有一個怪癖?我很感謝有人可能提供的任何見解。
就在我以爲我在Python上獲得了不錯的把握時!非常感謝回覆。這是一個很大的幫助。 – MikeGruz
爲什麼不b = a.copy()工作?什麼是周圍的工作.. – Merlin
我不明白你的意思是「爲什麼不工作」。它確實有效。也許你對變量名稱感到困惑?我說'e = d.copy()'是因爲那些是原始問題中使用的名稱。 – BrenBarn