0

我有一个熊猫数据框,其中的列有时具有 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()]

当它不在函数内部时可以工作,那么为什么它不能在函数中工作?

我对这里错误的原因更加好奇,而不是我已经可以解决的如何解决它。

4

0 回答 0