尝试使MFI资金流量指数功能正常运行时出现问题转换DataFrame

问题描述

尝试运行以下代码...这只是一个片段,但显示了我正在尝试执行的操作。 不确定熊猫如何工作以允许其通过set / series / DataFrame中的1个以上的数据。正在获取类型错误...详细来说,我不理解如何转换DataFrame才能使其正常工作。

raise TypeError(f"Could not convert {x} to numeric") from err
TypeError: Could not convert 11853.2600000011833.8100000011826.4100000011854.5600000011751.7900000011748.0500000011712.9400000011695.9000000011729.2200000011741.4800000011662.8600000011642.6300000011574.9800000011480.7900000011425.0800000011492.5600000011449.2300000011417.63000000 to numeric
@H_502_5@

致电:

data2 = pd.DataFrame(data,columns = ['timestamp','open','high','low','close','volume','close_time','quote_av','Trades','tb_base_av','tb_quote_av','ignore' ])
data2['timestamp'] = pd.to_datetime(data2['timestamp'],unit='ms')
# Start of getting MFI data and calculating MFI
high = pd.Series(data2['high'])
low = pd.Series(data2['low'])
close = pd.Series(data2['close'])
volume = pd.Series(data2['volume'])
cmfi = mfi2(high,low,close,volume)
@H_502_5@

打电话给这个...

def mfi2(high,volume):
    df = pd.DataFrame([high,volume]).T
    df.columns = ['High','Low','Close','Volume']
    df['Up_or_Down'] = 0
    df.loc[(df['Close'] > df['Close'].shift(1,fill_value=df['Close'].mean())),'Up_or_Down'] = 1
    df.loc[(df['Close'] < df['Close'].shift(1,'Up_or_Down'] = 2
    # 1 typical price
    tp = (df['High'] + df['Low'] + df['Close']) / 3.0
    # 2 money flow
    mf = tp * df['Volume']
    # 2 up or down column
    df['Up_or_Down'] = 0
    df.loc[(tp > tp.shift(1)),'Up_or_Down'] = 1
    df.loc[(tp < tp.shift(1)),'Up_or_Down'] = -1
    # 3 positive and negative money flow with n periods
    df['1p_Positive_Money_Flow'] = 0.0
    df.loc[df['Up_or_Down'] == 1,'1p_Positive_Money_Flow'] = mf
    n_positive_mf = df['1p_Positive_Money_Flow'].rolling(n,min_periods=0).sum()
    # 3 money flow
    mf = tp * df['Volume'] * df['Up_or_Down']
    df['1p_Negative_Money_Flow'] = 0.0
    df.loc[df['Up_or_Down'] == 2,'1p_Negative_Money_Flow'] = mf
    n_negative_mf = df['1p_Negative_Money_Flow'].rolling(n,min_periods=0).sum()
    # 4 positive and negative money flow with n periods
    n_positive_mf = mf.rolling(n).apply(
        lambda x: np.sum(np.where(x >= 0.0,x,0.0)),raw=True)
    n_negative_mf = abs(mf.rolling(n).apply(
        lambda x: np.sum(np.where(x < 0.0,raw=True))
    # 4 money flow index
    # 5 money flow index
    mr = n_positive_mf / n_negative_mf
    mr = (100 - (100 / (1 + mr)))
    if fillna:
        mr = mr.replace([np.inf,-np.inf],np.nan).fillna(50)
    return pd.Series(mr,name='mfi_'+str(n))
@H_502_5@


解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)