【发布时间】:2018-03-01 06:30:41
【问题描述】:
signals 是一个 pandas 数据框,我在其中存储买卖信号。使用getbuySignal 函数,我可以获取生成购买信号的日期,并将这些日期存储在vector_buy 数组中。然后使用get_close函数,我想获得每个“买入日”前20天的收盘价(来自sh600004dataframe)并将它们存储在vector_close中。
我打印了vector_close 来检查我的代码是否正确。但我得到了非常奇怪的输出。 get_close 函数中if i<20 部分的输出是一个仅包含close prices 的数组。但是else 部分的输出包含close prince 和datetime index。就像底部图片中显示的那样。
vector_buy = []
vector_close = []
def get_buySignal():
list_buy = []
for i in range(0, len(signals.index)):
global vector_buy
if signals['positions'][i]==1.0:
list_buy.append(i)
vector_buy = np.array(list_buy)
def get_close():
close_list = []
for i in vector_buy:
global vector_close
if i < 20:
close_list.append(sh600004['close'][range(0,i)])
vector_close = np.array(close_list)
print vector_close
else:
close_list.append(sh600004['close'][range(i-19,i)])
vector_close = np.array(close_list)
print vector_close
get_buySignals()
get_close()
这是buy_vector的输出
array([ 10, 37, 47, 57, 82, 94, 102, 148, 165, 179, 188,
201, 248, 260, 270, 272, 290, 299, 331, 350, 361, 373,
409, 417, 435, 449, 457, 465, 491, 511, 527, 536, 555,
571, 592, 609, 634, 661, 672, 706, 718, 735, 776, 794,
807, 838, 854, 870, 890, 907, 915, 934, 969, 1004, 1013,
1020, 1032, 1034, 1039, 1050, 1099, 1116, 1140, 1157, 1202, 1214,
1228, 1238, 1257, 1276, 1297, 1311, 1319, 1347, 1376, 1379, 1389,
1406, 1425, 1455, 1460, 1478, 1492, 1518, 1533, 1545, 1559, 1574,
1590, 1615, 1627, 1657, 1683, 1692, 1704, 1731, 1742, 1758, 1775,
1795, 1824, 1836, 1852, 1864, 1905, 1913, 1950, 1966, 1986, 1999,
2005, 2020, 2046, 2079, 2088, 2108, 2113, 2124, 2145, 2154, 2166,
2178, 2218, 2234, 2244, 2251, 2302, 2309, 2311, 2324, 2339, 2351,
2372, 2387, 2397, 2408, 2422, 2446, 2462])
【问题讨论】:
-
目前还不清楚问题是什么——那张截图到底显示了什么?它似乎至少打印了 2 件东西。你期望会发生什么?您的代码和您对它的用途的描述似乎也不一致 - 但一旦弄清楚实际问题是什么,就可以帮助解决这个问题。
-
第一个打印输出是我从
if i<20打印vector_close时得到的。第二个打印输出是来自else部分get_close函数的输出。我想摆脱输出的日期时间索引。 -
你能更新你的代码来展示你是如何打印这两个东西的吗?您当前的循环中只有一个打印语句。
-
我更新了代码。
标签: python python-2.7 pandas numpy