【发布时间】:2016-10-22 18:49:56
【问题描述】:
我有以下数据框:
Open High Low Close
Date
2000-02-01 6841.12 7052.22 6841.12 7050.46
2000-02-02 7063.57 7172.05 7038.71 7171.95
2000-02-03 7175.87 7354.56 7134.42 7354.26
我想使用来自不同模块的函数。假设我将模块称为TA.py。在这个模块中,我输入以下函数:
def pan1(val):
return val > val.shift(1)
现在,我想应用这个函数在数据框中创建一个新列:
import TA as TA
df['signal'] = np.where(TA.pan1(df.High),'Yes', 'No')
我收到模块“TA”没有属性“pan1”的错误消息。
我怎样才能重建它正在工作的东西(通过保持一个模块灵魂)?如果我在同一个脚本(没有模块)中使用相同的函数,它就可以工作。
编辑:如 cmets 中所述,TA.py 中还有其他功能,我可以毫无问题地导入。但是这个函数pan1 在当前设置中似乎是错误的或不可用的。因此,欢迎任何提示我应该做些什么不同的事情。
【问题讨论】:
-
如果用
from TA import pan1 as TA_pan1代替import TA as TA,然后像np.where(TA_pan1(df.High),'Yes', 'No')一样使用它会发生什么? -
@BorrajaX,出现错误:无法导入名称'pan1'
-
这很奇怪,我可能帮不上什么忙,但是……也许还有另一个 TA 模块?你可以试试这个(在两个不同的行):
import TA print TA.__file__看看TA的路径是否指向你真正想要导入的TA? :-S 可能不会是这样,不过……抱歉,我帮不上忙 -
@BorrajaX,我可以从同一个 TA 模块导入和应用其他功能。因此我假设函数 pan1 的构造方式在模块中不起作用。但我该怎么做?
-
有两个可能的原因:(1)python 解释器严重损坏,(2)你的模块做错了。我的赌注是(2)。 FWIW 你在这里写的函数很好,我可以把它放到一个模块中,然后从另一个模块导入。
标签: python pandas dataframe module