如何在熊猫中索引过去一个月?
Posted
技术标签:
【中文标题】如何在熊猫中索引过去一个月?【英文标题】: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)
?
【参考方案1】:
您可以使用日期时间模块中的date
和relativedelta
。
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")
【讨论】:
以上是关于如何在熊猫中索引过去一个月?的主要内容,如果未能解决你的问题,请参考以下文章