【问题标题】:How to filter for dates range in timeseries or dataframe using python如何使用python过滤时间序列或数据框中的日期范围
【发布时间】:2021-01-06 00:04:06
【问题描述】:

仍然是 Python 的新手,只是想学习这些东西。感谢任何帮助。

现在,当我连接到 Alpha Vantage 时,我得到了所有日期的全部数据,看起来像这样

我找到了一些很好的指南资源,但我不断收到空数据框或错误

目前为止的代码是这样的

import pandas as pd
from pandas import DataFrame
import datetime
from datetime import datetime as dt
from alpha_vantage.timeseries import TimeSeries
import numpy as np

stock_ticker = 'SPY'
api_key = open('/content/drive/My Drive/Colab Notebooks/key').read()

ts = TimeSeries (key=api_key, output_format = "pandas")
data_daily, meta_data = ts.get_daily_adjusted(symbol=stock_ticker, outputsize ='full')
#data_date_changed = data[:'2019-11-29']

data = pd.DataFrame(data_daily)

df.loc[datetime.date(year=2014,month=1,day=1):datetime.date(year=2015,month=2,day=1)]

【问题讨论】:

    标签: python pandas dataframe time-series alpha-vantage


    【解决方案1】:

    答案是

    stock_ticker = 'SPY'
    api_key = 'apikeyddddd'
    
    ts = TimeSeries (key=api_key, output_format = "pandas")
    data_daily, meta_data = ts.get_daily_adjusted(symbol=stock_ticker, outputsize ='full')
    
    test = data_daily[(data_daily.index > '2014-01-01') & (data_daily.index <= '2017-08-15')]
    
    print(data_daily)
    print(test)
    
    

    【讨论】:

      【解决方案2】:
      import datetime 
      df.loc[datetime.date(year=2014,month=1,day=1):datetime.date(year=2014,month=2,day=1)]
      

      根据我的经验,你不能在loc 中传递一个简单的字符串,必须是一个日期时间对象。

      【讨论】:

      • 如何设置以便打印结果?我试着做 filter = df.loc[datetime.date(year=2014,month=1,day=1):datetime.date(year=2014,month=2,day=1)] 它仍然打印出空数据框
      • 可能是因为您在该范围内没有任何日期。尝试增加范围
      • 数据框中的日期是从 1999 年到 2020 年。日期存储在索引中,这会影响 df.loc 的代码吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2013-03-07
      • 2021-03-28
      相关资源
      最近更新 更多