【问题标题】:How to index out the past month in pandas?如何在熊猫中索引过去一个月?
【发布时间】:2021-03-22 22:56:04
【问题描述】:

好的,所以我想知道是否可以在不指定确切月份的情况下在 pandas 中索引 4 个月。所以说代码是:

import pandas as pd
import datetime as dt
import pandas_datareader as web

start_date = '2019-01-01'
end_date = '2020-11-01'

df = web.datareader('AMD', yahoo, start, end)

这段代码提取了近 2 年的数据,所以我的问题是如何索引过去 4 个月,而不指定 2020 年 7 月 1 日到现在? (顺便说一下,这样做的原因是说我总是需要过去 4 个月,随着时间的推移,2020 年 7 月 1 日将不再是最后 4 个月,所以我试图找到一种方法来找到持续 4 个月,无需每天更换)

【问题讨论】:

  • 你可以使用end_date = pd.Timestamp.now().date()然后start_date = end_date - pd.DateOffset(months=4)

标签: python pandas dataframe datetime indexing


【解决方案1】:

您可以使用日期时间模块中的daterelativedelta

import pandas as pd
import pandas_datareader as web
from datetime import date
from dateutil.relativedelta import relativedelta

end = date.today()
start = end + relativedelta(months=-4)
stocks = ['AMD']

df = web.DataReader(stocks, 'yahoo', start, end)

输出

print(df.head(2).append(df.tail(2)))
Attributes  Adj Close      Close       High        Low       Open    Volume
Symbols           AMD        AMD        AMD        AMD        AMD       AMD
Date                                                                       
2020-08-11  76.879997  76.879997  80.709999  76.099998  80.709999  77877700
2020-08-12  82.610001  82.610001  82.879997  77.550003  78.430000  88607800
2020-12-10  91.660004  91.660004  92.089996  89.029999  89.550003  33771700
2020-12-11  90.440002  90.440002  91.790001  90.160004  89.550003   3404191

【讨论】:

    【解决方案2】:

    您可以动态定义 start_date 和 end_date,例如:

    from datetime import date
    from dateutil.relativedelta import relativedelta
    
    end_date = date.today().strftime("%Y-%m-%d")
    
    start_date = (date.today() - relativedelta(months=4)).strftime("%Y-%m-%d")
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 2021-08-01
      • 2019-05-26
      • 1970-01-01
      相关资源
      最近更新 更多