2017-10-18 30 views
1

根据以下我有这个TypeError,我检查了我的df,它全部只包含数字,当我转换为numpy数组时,是否可能导致这种情况?转换后的阵列有像在异构阵列上调用preprocessing.scale

[Timestamp('1993-02-11 00:00:00') 28.1216 28.3374 ...] 

任何建议如何解决这个,请?

df:   
    Date  Open  High  Low  Close  Volume 
9 1993-02-11 28.1216 28.3374 28.1216 28.2197  19500 
10 1993-02-12 28.1804 28.1804 28.0038 28.0038  42500 
11 1993-02-16 27.9253 27.9253 27.2581 27.2974  374800 
12 1993-02-17 27.2974 27.3366 27.1796 27.2777  210900 

X = np.array(df.drop(['High'], 1)) 
X = preprocessing.scale(X) 

TypeError: float() argument must be a string or a number 
+1

好开始,错误是不言自明的:它不能处理的datetime对象或任何你的日期。 – sascha

回答

0

当你说你的数据框“所有包含数字只有”,你也注意到,第一列由datetime对象的。错误是告诉你preprocessing.scale只想使用浮点值。

然而,真正的问题是你期望发生的事情。 preprocessing.scale以均值为中心值并对方差进行归一化。这就是说,所测量的数量都大致相同。现在,您的第一列将告诉您数据对应的日期,而其余列则是数字数据本身。为什么你想要规范日期? 如何你会标准化日期?

从语义上讲,我相信你应该让你的日子独自一人。无论您计划对数字数据执行哪些后期处理,规范化数据仍应按原始日期进行参数化。如果你也想处理你的日期,你需要想出一个明确的方式来处理你的日期到数字(例如,elapsed time from a given date in given units)。

所以我相信你应该从你处理放下你的日期轮干脆,并与

X = df.drop(['Date','High'], 1).as_matrix()