[英]I am getting the error that the local variable cruty referenced before assignment
[英]I am getting this error “local variable 'col' referenced before assignment” when running the following code:
def log_hist(data):
data = pd.DataFrame([])
for col in data:
data_log = np.log(data[col])
return data[col].hist()
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-127-dc391683ef40> in <module>()
----> 1 log_hist(df2)
<ipython-input-126-60d8684e3abe> in log_hist(data)
3 for col in data:
4 data_log = np.log(data[col])
----> 5 return data[col].hist()
6
7
UnboundLocalError: local variable 'col' referenced before assignment
由於您的 dataframe 是空的,因此沒有什么可以迭代的。 for 循環不會實例化 col 變量。 如果您的可迭代對象(數據框)不為空,則該變量將在循環后可用。
想法示例:
>>> for x in range(10):
... pass
...
>>> x
9
>>> for y in []:
... pass
...
>>> y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined
>>>
變量col
僅在for
循環中有效。 如果要訪問循環外的值(例如,捕獲循環處理的最后一個值),請在循環外聲明一個變量:
def log_hist(data):
last_col = None
for col in data:
np.log(data[col])
last_col = col
return data[last_col].hist() # will raise an exception if the dataframe is empty!
請注意,我刪除了 function 開頭的行,它清零了data
參數——我認為這是一些調試嘗試的一部分,但它顯然完全破壞了 function 在那里。 :)
我還刪除了data_log
變量,因為它沒有在任何地方使用; 分配一個你從不使用的變量是沒有意義的。 (我不熟悉np.log
,我認為它有一個可取的副作用 - 否則循環開始時大多毫無意義,應該用只選擇最后一列而不循環整個object。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.