你好,我有多个股票我从熊猫CSV生成。我的目标似乎很简单,我每天都在测量体积的百分比差异
for ticker in tickers:
df = pd.read_csv('stock_dfs/{}.csv'.format(ticker))
df['Volume_Pct_Change'] = df['Volume'].pct_change().fillna(0)
df.to_csv('stonks_dfs/{}.csv'.format(ticker))
这很简单。现在我想找出所有的时候,体积都在150%以上。我是在另一个python脚本中完成的,与提取原始数据不同。你知道吗
with open('sp500tickers.pickle', "rb") as f:
tickers = pickle.load(f)
for ticker in tickers:
df = pd.read_csv('stock_dfs/{}.csv'.format(ticker))
df_vpc = df.loc[df['Volume_Pct_Change'] >= 1.5]
df_vpc.to_csv('{}.csv'.format(ticker))
这对我很有效。你知道吗
我的问题是,我想在所选行之前和之后拉X行数,即(在所选行之前拉7行,在所选行之后拉30行,所选行的Volume\u Pct\u change>;=1.5),这样我就可以绘制出图表,并看到在Volume峰值之前和之后随时间的变化。如果有办法用Numpy的话我会得到奖励。你知道吗
编辑一:这么跑
df = pd.read_csv('AAPL.csv')
c=df['Volume_Pct_Change'] >= 1.2
for idx in c:
df.iloc[(idx-7):(idx+30)]
当条件存在时,为c提供正确的true输出
114,False
115,False
116,False
117,False
118,True
119,False
120,False
121,False
但是在运行df.iloc[(idx-7):(idx+30)]
之后,当我将df导出到csv时,我看不到它有任何变化。你知道吗
编辑2:好的,开始跑步吧
df = pd.read_csv('AAPL.csv')
c = df.index[df['Volume_Pct_Change'] >= 1.2]
for idx in c:
df.iloc[(idx-7):(idx+30)]
在导出时,我看不出df有什么不同,但是把d=df.iloc[(idx-7):(idx+30)]
放进去工作,但是在数据帧中只有一组df,这让我很困惑。它只保存了最后一个。似乎它循环覆盖数据帧,每个人都以最后一个结束?你知道吗
最后编辑:谢谢大家的帮助
df = pd.read_csv('AAPL.csv')
c = df.index[df['Volume_Pct_Change'] >= 1.2]
for idx in c:
d = df.iloc[(idx-7):(idx+30)]
d.to_csv('{}.csv'.format(idx))
达到了预期的效果,而且速度很快。你知道吗
像这样的可能?你知道吗
使用iloc得到满足>;150%条件的行索引列表。 然后将列表转换为一个新列表,列表中每个值的范围为-7到+30。 使用此新列表可获得所需的结果。你知道吗
相关问题 更多 >
编程相关推荐