簡體   English   中英

'tuple' object 不支持項目分配 - DataFrame

[英]'tuple' object does not support item assignment - DataFrame

我有一個數據框字典d ,其中鍵是名稱,值是實際數據框。 我有一個 function 規范化一些數據幀並吐出一個 plot,標題。 function 從d.items()中獲取一個元組(作為參數df ),因此第一個(第 0 個)元素是名稱,下一個是數據幀。

我必須對 function 中的數據框進行一些操作,並且我使用df[1]這樣做沒有任何問題。 但是,一行是df[1] = df[1].round(2) ,這會引發錯誤'tuple' object does not support item assignment 我已經通過在此行之前打印出它的類型 write 來驗證df[1]是一個數據幀。 為什么這不起作用? 它不是一個元組。

那是因為你的變量是一個元組,你不能分配給一個元組。 元組是不可變的。 我對你的問題的理解:

from pandas import DataFrame

d    = {'mydf' : DataFrame({'c1':(1,2),'c2':(4,5)}) } #A dictionary of DFs. 
i    = list(d.items())[0]                             #The first item from .items()
i[1] = i[1].round(2)                                  #ERROR

請注意,“i”是一個元組,因為那是.items() 返回的內容(元組)。 即使您要覆蓋的內容是可變的,您也無法保存到 i 中。 我知道這聽起來很奇怪,因為你可以這樣做:

x = (7,[1,2,3])
x[1].append(4)
print(x)

這樣做的原因很復雜。 本質上,上面的元組存儲了指向元組內信息的指針(而不是數據本身)。 因此,如果您訪問元組的項目(如 x[1]),則 python 會將您帶到該指針項目(在我的情況下為列表)並允許您在其上運行 append,因為該列表是可變的。 在您的情況下,您不是試圖單獨訪問 i[1] ,而是試圖覆蓋元組中的 i[1] 條目。 希望這是有道理的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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