pandas - Pandas 根据日期过滤行
问题描述
一直在编写代码以通过一些公式推送股票数据以帮助选择我想要的东西。为确保公式有效,希望对公式的预测进行回测(模拟)。原始数据表行从 2009 年 1 月 1 日到 2019 年 12 月 2 日,列公司 1、公司 2 等(99 比较)
我在 Excel 中制作单独的表格,即从 2009-1-1 到 2018-10-1 并通过 python 运行它 - 然后看看 2018-11-1 结果会是什么。结果我很满意..... 即 22% 的回报,但我手动剪切了输入数据
认为自动化很简单(在 DF 中剪切原始数据并将其输入模型)。
问题是,数据变得混乱,我尝试了很多选择,但仍然无法弄清楚原因。阅读有关该主题的几乎所有主题。不胜感激。
看起来很傻,但我很生气
import pandas as pd
import numpy as np
from datetime import date, timedelta
#read stock_price.csv file and sort by date
df_price = pd.read_csv("tests/stock_prices.csv")
df_price['date']= pd.to_datetime(df_price['date'])
#df_price.set_index('date', drop=True, append=False, inplace=True, verify_integrity=False)
#this is where it goes wrong
df_price_filter = df_price[df_price["date"].isin(pd.date_range("2009-01-01", "2018-09-28"))]
df_price_filter.sort_values(by='date')
print(df_price_filter)
pd.DataFrame(df_price_filter).to_csv('CGResults/5_data_2018-09_28.csv',index=True)
解决方案
这应该这样做:
start_date = "2009-01-01"
end_date = "2018-09-28"
date_filter = (df_price["date"] >= start_date) & (df_price["date"] <= end_date)
df_price_filter = df_price[date_filter]
df_price_filter = df_price_filter.sort_values(by='date')
推荐阅读
- sql - 由于字段的时间戳超出标准 SQL 时间戳的范围,无法在 Google BigQuery 中删除或更新行
- java - 严重:异常启动过滤器 ShiroFilter 错误
- android - VFY:register1 v4 type 2,通缉 17
- c - 这是 Vernam Cipher 的 C 代码,如何将数字作为输入消息而不是字符串?
- c++ - 如何在类派生层次结构的所有步骤中调用方法?
- javascript - 使用jquery为每列的textarea添加值
- html - css flex 将可滚动的 div 设置为父级的 100%
- python - 如何确定在顺序模型中添加的层数以使用 Tensorflow 解决多元线性回归问题?
- mysql - 如果 select(*) 计数值为 2,如何更改此查询以返回 true?
- typescript - 如何在 TypeScript 中保存枚举值?