我有一个熊猫数据框,其中的列有时具有 nan 值。我知道我可以使用 pandas 自己的dropna函数来删除这些,但我想在这种情况下编写自己的函数,然后我可以单独调用每一列,所以我写道:
data = pd.read_csv('data.csv')
def remove_nans_from_column(column_name):
data = data[~data[column_name].isna()]
remove_nans_from_column('bmi')
但是运行这个会产生这个错误:
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-28-3be0ddcb71ff> in <module>()
----> 1 remove_nans_from_column('bmi')
<ipython-input-26-911d33fb618e> in remove_nans_from_column(column_name)
1 def remove_nans_from_column(column_name):
----> 2 data = data[~data[column_name].isna()]
UnboundLocalError: local variable 'data' referenced before assignment
我了解变量数据未在函数内部定义,但它应该能够从其余代码中获取它。
data = data[~data['bmi'].isna()]
当它不在函数内部时可以工作,那么为什么它不能在函数中工作?
我对这里错误的原因更加好奇,而不是我已经可以解决的如何解决它。