在函数方法中执行 Pandas 操作时,发生 Python Pandas 异常 "example",简单函数有效

标签 python python-3.x pandas dataframe

我遇到了一个奇怪的问题,并尝试在这里解释一下。

看这段代码,这里“df”是 pandas 数据框,以日期为索引,以开盘价、最高价、最低价、收盘价、成交量为列。

calc(df) 是我调用来计算逻辑并在 get_update() 函数内调用 ematv() 的函数。

1.在下面的代码中,当我运行时

df = ematv(df.fillna(0),13)

没有看到错误,这是根据“收盘价”计算 EMA

2.The same function called from get_update() ,df=ematv(df['example'].fillna(0),lengthema,name='example') when i use to calculate ema where i send 'example' column as data.Here i get the error. exception occurred '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_resolver.py:166: FutureWarning: Series.base is deprecated and will be removed in a future version attr = getattr(var, n) pydevd_resolver.py:166: FutureWarning: Series.data is deprecated and will be removed in a future version attr = getattr(var, n) pydevd_resolver.py:166: FutureWarning: Series.flags is deprecated and will be removed in a future version attr = getattr(var, n) pydevd_resolver.py:166: FutureWarning: Series.itemsize is deprecated and will be removed in a future version attr = getattr(var, n) pydevd_resolver.py:166: FutureWarning: Series.strides is deprecated and will be removed in a future version attr = getattr(var, n) pydevd_resolver.py:71: FutureWarning: Series.flags is deprecated and will be removed in a future version return getattr(var, attribute) pydevd_resolver.py:71: FutureWarning: Series.strides is deprecated and will be removed in a future version return 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

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)

关于在函数方法中执行 Pandas 操作时,发生 Python Pandas 异常 "example",简单函数有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56522772/

相关文章:

python - yticklabels 在 Pandas 图中截断

python - 如何默认隐藏wxpython状态栏

python - 无法更改框架中函数的值

python - 将 Pandas 时间戳插入 Mongodb

python - 根据值的数量连接嵌套字典键

python - setup.py 中的 runall 命令

python - 在 pandas groupby 绘图栏中重新排序星期几

python - Scapy:如何实现条件字段列表?

python - 运行 Python Web 服务器

python-3.x - 无法计算输出视频流的 fps