是否有基于日期的方式来获取最近一个月的数据?我进行了很多搜索,但找不到合适的精确解决方案。如果当前日期在索引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的情况下找到最近一个月的数据?如果两者都缺少日期,则会出现错误,这也是一个问题。
谢谢。
答案 0 :(得分: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]