gpt4 book ai didi

python - 使用 pandas 或 Numpy 根据列数据选择一系列行

转载 作者:行者123 更新时间:2023-12-01 00:34:03 25 4
gpt4 key购买 nike

您好,我有多个从 pandas 生成的股票 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 行,即(Volume_Pct_change >= 1.5 的所选行之前 7 行和之后 30 行),这样我就可以绘制图表并查看更改随着交易量峰值前后的时间变化。如果有办法使用 Numpy 的话,对我来说是额外的奖励。

编辑1:正在运行

df = pd.read_csv('AAPL.csv')
c=df['Volume_Pct_Change'] >= 1.2
对于 c 中的 idx:
df.iloc[(idx-7):(idx+30)]

当条件存在时,给 c 正确的输出 true

114,假
115、错误
116、错误
117、错误
118、真实
119、错误
120,错误
121,错误

但是运行df.iloc[(idx-7):(idx+30)]后,当我将其导出到csv时,我发现df没有变化。

编辑2:好的,开始运行

df = pd.read_csv('AAPL.csv')
c = df.index[df['Volume_Pct_Change'] >= 1.2]
对于 c 中的 idx:
df.iloc[(idx-7):(idx+30)]

导出时我发现 df 没有区别,但将 d=df.iloc[(idx-7):(idx+30)] 可以工作,但数据框中只有一组让我感到困惑。它只保存最后一个。看起来它会循环覆盖数据帧,每个数据帧都以最后一个结尾?

最终编辑:感谢大家的帮助

df = pd.read_csv('AAPL.csv')
c = df.index[df['Volume_Pct_Change'] >= 1.2]
对于 c 中的 idx:
d = df.iloc[(idx-7):(idx+30)]
d.to_csv('{}.csv'.format(idx))

达到了预期的结果,而且速度相当快。

最佳答案

也许是这样的?

c=df.index[df['Volume_Pct_Change'] >= 1.5]
for idx in c:
df.iloc[(idx-7):(idx+30)]

关于python - 使用 pandas 或 Numpy 根据列数据选择一系列行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com