繁体   English   中英

在 Jupyter 中调用定义的函数时命名错误

[英]Name error when calling defined function in Jupyter

我正在关注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

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

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

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

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

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

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

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

如果我写:

def whatever(a):
    return a*2

whatever("hallo")

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

我在jupyter notebook中也经常遇到这种问题
但是在用%% %%time替换%%后,错误解决了。 我不知道为什么?
因此,经过一些浏览后,我发现这不是 jupyter noteook 问题,而是 ipython 问题
这是问题,这个问题也在这个stackoverflow question中得到了回答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM