我有一个pandas数据框,其价格数据如下所示:
open high low close
timestamp
2018-02-07 18:00:00 8341.0 8460.5 8255.0 8255.0
2018-02-07 19:00:00 8250.0 8270.0 8033.5 8179.0
2018-02-07 20:00:00 8183.0 8225.0 7972.5 8165.0
我的目标是将其转换为numpy数组,迭代行,并执行一些计算,其结果应存储在同一数组的其他列中。
我正在使用bars_pd.as_matrix()将数据帧转换为numpy数组,并且需要向数组添加几个不同类型的列(float,bool,int)。我现在遇到了麻烦。我转换的numpy数组看起来像这样:
[[ 11670. 11748. 11663.5 11744.5]
[ 11740.5 11746.5 11637.5 11672.5]
...
[ 8070.5 8085.5 7977.5 8002. ]]
我需要得到的是,例如:
[[ 11670. 11748. 11663.5 11744.5 0 False]
[ 11740.5 11746.5 11637.5 11672.5 0 False]
...
[ 8070.5 8085.5 7977.5 8002. 0 False]]
这样我就可以在循环中填充这些列进行计算。
我尝试了各种方法来改变astype和连接/插入正确形状的数组,但是无法使其工作。 连接不同类型的np数组给了我一个错误,改变astype改变了数组结构。
有人可以建议如何实现这个目标吗?
更新:
我打算转换为numpy的原因是我需要比较每一行循环中的几个最后一个值。例如,使用for迭代pandas就像这样(我知道我不应该用于循环数据帧):
for i in range(0 + 6, size):
if ((bars['close'].iloc[i - 1] > bars['close'].iloc[i - 5])
and (bars['close'].iloc[i] < bars['close'].iloc[i - 4])):
do_something
我无法用iterrows实现相同的功能,因为它只返回下一个项目。我应该将最后6个值存储在一个单独的数组中,然后在iterrows中不断重写它们吗?
感谢。