Python “发生异常”;例如;在函数方法中执行此操作时,简单函数起作用
我面临一个奇怪的问题,并试图在这里解释这一点 看看这段代码,这里的“df”是一个数据框,日期作为索引,开放、高、低、闭、卷作为列 calc(df)是我用来计算逻辑并在get\u update()函数中调用ematv()的函数 1.当我运行时,在下面的代码中 df=ematv(df.fillna(0),13) 未发现错误,这是基于“关闭”计算EMA 2.当我使用get_update(),df=ematv(df['example'].fillna(0),lengthema,name='example')来计算ema时,从get_update()调用了相同的函数,在这里我得到了错误。 发生异常“示例” 我做错了什么,这对我来说可能是一个很好的教训。 下面给我的警告很少Python “发生异常”;例如;在函数方法中执行此操作时,简单函数起作用,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我面临一个奇怪的问题,并试图在这里解释这一点 看看这段代码,这里的“df”是一个数据框,日期作为索引,开放、高、低、闭、卷作为列 calc(df)是我用来计算逻辑并在get\u update()函数中调用ematv()的函数 1.当我运行时,在下面的代码中 df=ematv(df.fillna(0),13) 未发现错误,这是基于“关闭”计算EMA 2.当我使用get_update(),df=ematv(df['example'].fillna(0),lengthema,name='example
def ematv(df,period,name='close'):#closely matching except the decimal
newcol ='ema'+str(period)+name
df[newcol] = df[name].ewm(span=period,min_periods=0,adjust=False,ignore_na=False).mean()
return df
def get_update(df, length=None,threshold = None,lengthema=None):
if length is None:
length = 14
lengthema=13
column_name = 't1'
else:
length = int(length)
lengthema=int(lengthema)
column_name = 'ti_{}'.format(length)
df['example']=TA.test(df)//example column with value added
df=ematv(df['example'].fillna(0),lengthema,name='example')
return df
def calc(df):
df = ematv(df.fillna(0),13)
df = get_update(df.fillna(0), length=20,threshold =0,lengthema=13)
return df
calc(df)
我得到一些警告:
pydevd_解析器.py:166:FutureWarning:Series.base已弃用,并且
将在未来版本attr=getattr(var,n)中删除
pydevd_解析器.py:166:FutureWarning:Series.data已弃用,并且
将在未来版本attr=getattr(var,n)中删除
pydevd_解析器.py:166:FutureWarning:Series.flags已弃用,并且
将在未来版本attr=getattr(var,n)中删除
pydevd_解析器.py:166:FutureWarning:Series.itemsize已弃用
并将在将来的版本attr=getattr(var,n)中删除
pydevd_解析器.py:166:FutureWarning:Series.Streads不推荐使用
并将在将来的版本attr=getattr(var,n)中删除
pydevd_解析器.py:71:FutureWarning:Series.flags已弃用,并且
将在将来的版本返回getattr(var,attribute)时删除
pydevd_解析器.py:71:FutureWarning:Series.Streads已弃用,并且
将在将来的版本返回getattr(var,attribute)时删除
编辑1:
已尝试使用此编辑更改代码
def ematv(dff:DataFrame,period,name='close')-> Series:#closely matching except the decimal
newcol ='ema'+str(period)+name
dff[newcol] = dff[name].ewm(span=period,min_periods=0,adjust=False,ignore_na=False).mean()
return dff
现在计算ema,但我得到了这个错误
异常发生,通过的项目数量错误34个,放置意味着1个这是如何解决问题的我不是很确定,这解决了问题。添加此
df['examples']=''
在调用
df['examples']=ematv
这是如何解决问题的我不是很确定,这解决了问题。添加此
df['examples']=''
在调用
df['examples']=ematv
你在一个地方调用df=ematv(df.fillna(0),13)和df=ematv(df['example'].fillna(0),lengthema,name='example'),也许我遗漏了什么,但我相信你发出了两个不同的调用,这就是为什么它们的行为不同。这两个实例都不同,一次是用“close”计算ema这是第一个实例,第二个实例是计算ema,其中输入了“示例”列。为什么它在第二次审判中失败了呢。请检查给出的警告;发生异常,我没有收到任何其他错误。您是否可以添加异常的完整堆栈跟踪,似乎是导致此错误的关键:异常发生的“示例”…行
df['example']=TA.test(df)//添加值的示例列在get\u update
中不是有效的Python。有丢失的吗?哪里什么是TA?@gaFF TA是从Finta导入的,您可以使用任何类实例来检查这一点。你在一个地方调用df=ematv(df.fillna(0),13)和df=ematv(df['example'].fillna(0),lengthema,name='example'),也许我遗漏了什么,但我相信你发出了两个不同的调用,这就是为什么它们的行为不同。这两个实例都不同,一次是用“close”计算ema这是第一个实例,第二个实例是计算ema,其中输入了“示例”列。为什么它在第二次审判中失败了呢。请检查给出的警告;发生异常,我没有收到任何其他错误。您是否可以添加异常的完整堆栈跟踪,似乎是导致此错误的关键:异常发生的“示例”…行df['example']=TA.test(df)//添加值的示例列在get\u update
中不是有效的Python。有丢失的吗?哪里什么是TA?@gaFF TA是从Finta导入的,您可以使用任何类实例来检查这一点。
def ematv(dff,period,name='close'):#closely matching except the decimal
newcol ='ema'+str(period)+name
dff[newcol] = dff[name].ewm(span=period,min_periods=0,adjust=False,ignore_na=False).mean()
return dff[newcol]
def get_update(df, length=None,threshold = None,lengthema=None):
if length is None:
length = 14
lengthema=13
column_name = 't1'
else:
length = int(length)
lengthema=int(lengthema)
column_name = 'ti_{}'.format(length)
df['example']=TA.test(df)//example column with value added
df['examples']=''
df['examples']=ematv(df['example'].fillna(0),lengthema,name='example')
return df
def calc(df):
df = ematv(df.fillna(0),13)
df = get_update(df.fillna(0), length=20,threshold =0,lengthema=13)
return df
calc(df)