python - 转换数据帧:只有整数标量数组可以转换为标量索引
问题描述
有人可以帮助我吗,我正在尝试创建一个数据集,并且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])
解决方案
推荐阅读
- javascript - 如何在threejs中使用buffergeometry在两点之间绘制一条动态线
- powershell - 如何在 Azure Web App 应用设置中使用 PowerShell 转义名称错误的属性
- dynamics-crm - 购买附加组件时传输数据的方法
- python - 在 Python 中共享存储在更高目录中的模块和类的最佳实践
- android - 无法更新 \.gradle\caches\4.4\file-changes\last-build.bin
- r - `$<-.data.frame`(`*tmp*`, "mode", value = list(2L, 3L)) 中的错误:替换有 2 行,数据有 1
- sql - DATETIME 在 SQL Server 中给出没有时间的日期
- java - 使用 Spark 将字段添加到 CSV
- node.js - REACTION INIT:节点模块未成功安装
- .net - 根据其属性之一在列表中查找对象的索引