【发布时间】:2019-01-21 12:56:50
【问题描述】:
我有一个适用于 pandas 数据框的布尔子集函数:
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
将某些内容导入笔记本通常是个坏主意吗?如果这很重要,我会使用 jupiter 实验室。
【问题讨论】:
-
您要导入的脚本中是否还有另一个名为
df的方法? -
你确定你传递的是同一个
df? -
@Rahul Chawla - 实际上,当我注释掉所有内容时,
pick.operational起作用了,但operational定义!非常感谢!将调查df在pick.py的命名空间中的位置。 -
看起来我也需要重新启动内核才能再次执行导入。简单地使用 import 运行单元似乎不会导入最新版本的
pick模块。 -
看起来有一个 stackoverflow.com/questions/4111640/… 的案例