【问题标题】:Name error when calling defined function in Jupyter在 Jupyter 中调用定义的函数时出现名称错误
【发布时间】:2018-06-04 23:45:24
【问题描述】:

我正在学习 https://blog.patricktriest.com/analyzing-cryptocurrencies-python/ 的教程,但我有点卡住了。我很想定义一个函数,然后立即调用。

我的代码如下:

def merge_dfs_on_column(dataframes, labels, col):
    '''merge a single column of each dataframe on to a new combined dataframe'''
    series_dict={}
    for index in range(len(dataframes)):
        series_dict[labels[index]]=dataframes[index][col]
    return pd.DataFrame(series_dict)
# Merge the BTC price dataseries into a single dataframe
btc_usd_datasets= merge_dfs_on_column(list(exchange_data.values()),list(exchange_data.keys()),'Weighted Price')

我可以清楚地看到我已经定义了merge_dfs_on_column 函数,并且我认为语法是正确的,但是,当我在最后一行调用该函数时,出现以下错误:

NameError                                 Traceback (most recent call last)
<ipython-input-22-a113142205e3> in <module>()
      1 # Merge the BTC price dataseries into a single dataframe
----> 2 btc_usd_datasets= merge_dfs_on_column(list(exchange_data.values()),list(exchange_data.keys()),'Weighted Price')

NameError: name 'merge_dfs_on_column' is not defined

我在 Google 上搜索了答案并仔细检查了语法,但我不明白为什么在调用该函数时无法识别该函数。

【问题讨论】:

  • 您是否有机会导入该功能?如果是这样,你如何导入它?
  • 无法复制,请确保btc_usd_datasets= merge_dfs_on_column 中的空格字符不是不间断空格。
  • @zipa 不,我没有导入它,我自己从第 1-6 行定义它

标签: python-3.x function jupyter-notebook nameerror


【解决方案1】:

在您调用函数之前,Python 解释器不会执行您的函数定义。

仔细检查执行的内容和时间。在 Jupyter 中,可能会不按输入顺序运行代码,这似乎是您不小心做的事情。 (也许尝试“全部运行”)

【讨论】:

  • 很高兴听到!由于这是问题,您可能会考虑将标题更改为:“在 Jupyter 中调用定义的函数时出现名称错误”?​​
【解决方案2】:

好吧,如果你要定义自己,

那么您可能直接从网络上的某个地方复制并粘贴了它,它可能包含您可能看不到的字符。

只需通过键入该函数并使用pass 来定义该函数,然后注释掉其他代码,看看它是否正常工作。

【讨论】:

  • 我在做教程时刻意避免复制/粘贴,希望通过全部输入,我将学习代码组合的方式。这里就是这种情况。实际上,为了确保我的打字没有问题,然后我实际上用复制/粘贴版本替换了我的打字版本并且遇到了同样的问题!
【解决方案3】:

“全部运行”不起作用。
关闭内核并重新启动也无济于事。

如果我写:

def whatever(a):
    return a*2

whatever("hallo")

在下一个单元格中,这有效。

【讨论】:

  • 这看起来像是一个新问题,而不是评论。在这种情况下,您更有可能通过发布新问题来获得帮助。
【解决方案4】:

我在jupyter notebook中也经常遇到这种问题
但是在用%%time 替换%% 后,错误解决了。我不知道为什么?
所以,经过一番浏览后,我发现这不是 jupyter noteenook 问题,而是 ipython 问题
here is the issue 并且这个问题在 this stackoverflow question 中得到了回答

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多