如何根据当前日期查找上个月的数据?

问题描述 投票:0回答:1

是否有基于日期的方式来获取最近一个月的数据?我进行了很多搜索,但找不到合适的精确解决方案。如果当前日期在索引420上,则日期为2012-01-09。我想要一个数据框架,其中包含2011年12月9日至2012年1月9日之间的数据。

import pandas as pd
import numpy as np

times = pd.DataFrame(pd.date_range('2012-01-01', '2012-04-01', freq='30min'), columns=['date'])
times['date'] = pd.to_datetime(times['date'])
times['value'] = np.random.randint(1, 6, times.shape[0])

months = times.iloc[0:420].sort_values(by='date', ascending=True).set_index('date').last('1M')


使用.last命令,结果于2012-01-01结束,因为这是最后一个月。我了解这一点,但是有什么方法可以在不使用timedelta或相对delta的情况下找到最近一个月的数据?如果两者都缺少日期,则会出现错误,这也是一个问题。

谢谢。

pandas datetime
1个回答
0
投票

我认为您要查找的是pd.Period。您可以将所有日期时间转换为一个月周期,然后使用该日期进行搜索

# turn your datetimes to month periods
times["month"] = times[times["date"].dt.to_period("m")]

# turn your search date to a period
your_date = pd.Period(your_date, "m")

# search times
times[times["month"] == your_date]
© www.soinside.com 2019 - 2024. All rights reserved.