Python jupyter笔记本/实验室导入功能失败

Python jupyter笔记本/实验室导入功能失败,python,pandas,jupyter,Python,Pandas,Jupyter,我有一个布尔子集函数,可用于数据帧: def operational(df): return df[(df['cf'] != 0) & (df['ta'] > 0)] 它在脚本和jupiter笔记本中运行良好,输入单元格时: #df = ... df2 = operational(df) 然而,如果我将函数定义保留在pick.py中并导入到jupyter中,事情会变得出乎意料。在导入模块时,jupiter似乎不会重新识别函数中的变量类型: import pick pi

我有一个布尔子集函数,可用于数据帧:

def operational(df):
    return df[(df['cf'] != 0) & (df['ta'] > 0)]
它在脚本和jupiter笔记本中运行良好,输入单元格时:

#df = ...
df2 = operational(df)
然而,如果我将函数定义保留在
pick.py
中并导入到jupyter中,事情会变得出乎意料。在导入模块时,jupiter似乎不会重新识别函数中的变量类型:

import pick

pick.operational(df).head()

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-16-374442fd7c0a> in <module>()
      1 import pick
----> 2 pick.operational(df).head()

C:\Users\Евгений\Documents\GitHub\sandbox\pick.py in operational(_df)
     11 
     12 def operational(df):
---> 13     return df[(df['cf'] != 0) & (df['ta'] > 0)]

     14 
     15 

TypeError: 'method' object is not subscriptable
导入拾取
pick.operational(df.head)()
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
1进口提货
---->2拾取操作(df)头()
C:\Users\ББГБцц\Documents\GitHub\sandbox\pick.py处于操作状态(_df)
11
12 def操作(df):
--->13返回df[(df['cf']!=0)和(df['ta']>0)]
14
15
TypeError:“方法”对象不可下标

将某些东西导入笔记本电脑通常是个坏主意吗?我用的是jupiter lab,如果这有关系的话。

好的,从评论中可以看出,您似乎希望笔记本自动接收导入脚本中的更改。默认情况下,Python缓存
import
s,因此在重启Python之前,对导入模块的大部分更改都不会被提取

幸运的是,Jupyter笔记本电脑在IPython上运行,它提供了一个。您只需运行以下命令:

%autoreload 2

在任何单元格中,从那时起,您的笔记本应该在您进行更改时自动拾取
pick.py
中的任何更改(当然,在重新加载魔法看到更改之前,您仍然必须将更改保存到磁盘上)。

好的,从评论中可以看出,您似乎期望笔记本自动拾取导入脚本中的更改。默认情况下,Python缓存
import
s,因此在重启Python之前,对导入模块的大部分更改都不会被提取

幸运的是,Jupyter笔记本电脑在IPython上运行,它提供了一个。您只需运行以下命令:

%autoreload 2

在任何单元格中,从那时起,您的笔记本应该在您进行更改时自动拾取
pick.py
中的任何更改(当然,在重新加载魔法看到更改之前,您仍然必须将更改保存到磁盘).

在您导入到的脚本中是否有另一个名为
df
的方法?您确定传递的是相同的
df
?@Rahul Chawla-实际上,
pick.operational
在我注释掉所有内容时起作用,但是
operational
定义!非常感谢!将调查
df
pick.py
的命名空间中的放置位置。看起来我还需要重新启动内核以再次实现导入。简单地使用import运行单元格似乎不会导入最新版本的
pick
模块。看起来像是一个例子,在您要导入的脚本中是否有另一个名为
df
的方法?您确定要传递相同的
df
?@Rahul Chawla-实际上,
pick.operational
在我注释掉所有内容时起作用,但是
operational
定义!非常感谢!将调查
df
pick.py
的命名空间中的放置位置。看起来我还需要重新启动内核以再次实现导入。简单地使用import运行单元格似乎不会导入最新版本的
pick
模块。看起来像是一个