首页 > 解决方案 > 转换数据帧:只有整数标量数组可以转换为标量索引

问题描述

有人可以帮助我吗,我正在尝试创建一个数据集,并且only integer scalar arrays can be converted to a scalar index对于相同的代码片段总是相同的错误

Y = pd.Series(dataset_df['bin'].values.flatten().tolist(), index=X.index).to_frame('bin'))

我不明白为什么会发生此错误。如果有人可以向我解释一下,请提前谢谢。

obs.:data变量是数据框,FEATURE_COLUMNS变量是data列(如feat_mean_frac_close),daily_vol变量是浮点数。

def create_dataset(data, daily_vol):
    
    TP = 0.01
    SL = - TP

    T, P, X, Y, Y2 = [], [], [], [], []
    TIME = []
    
    for i in daily_vol.index:

        window = data.loc[i][FEATURE_COLUMNS].values

        if np.isnan(window).any():
            continue

        now = data.close[i]
        future_window = data.loc[i:i + timedelta(days=HORIZON)].close

        Ti = daily_vol.loc[i]

        min_ret_situation, take_action, timings = get_meta_barier(future_window, now, Ti, TP, SL, False)

        X.append(window)
        Y.append(min_ret_situation)
        Y2.append(take_action)
        T.append(timings)
        P.append(data.loc[i].close)
        TIME.append(i)
        
    dataset_df = pd.DataFrame(np.array(X), columns = [FEATURE_COLUMNS], index = TIME)
    dataset_df['bin'] = np.argmax(Y, axis=1)
    dataset_df['t1'] = pd.Series(dataset_df.index, index = dataset_df.index)
    dataset_df['w'] = 1. / len(Y)

    X = dataset_df[FEATURE_COLUMNS]
    Y = pd.Series(dataset_df['bin'].values.flatten().tolist(), index=X.index).to_frame('bin')
    Y['w'] = 1./Y.shape[0]
    Y['t1'] = pd.Series(Y.index, index = Y.index)
    X.columns = FEATURE_COLUMNS
    
    return X, Y, T, P

from datetime import datetime

t = datetime.strptime('2010-01-01', '%Y-%m-%d') # 2017

X, Y, T, P = create_dataset(data[:t], daily_vol[:t])

标签: pythonarrayspandasnumpyindexing

解决方案


推荐阅读