我有一个Pandas库存记录的数据框架,我的目标是通过一个特定的“天”,例如8,并获得数据集中每个月和年的8号的过滤数据框架。我已经通过了一些SO问题,并设法获得我的要求的一部分,即获得特定天的记录,但是,如果"8号“的数据不存在特定的月和年,我需要获取此特定月份和年份中存在记录的最近一天的记录。
例如,如果我在8日传递,但没有2022年1月8日的记录,我需要查看是否存在2022年1月7日和9日的记录,依此类推...并获取最近日期的记录。
如果第7天和第9天都有记录,我将获得第9天(更高日期)的记录。
但是,如果第7个的记录存在而第9个不存在,那么我将获得第7个(最接近的)的记录。
filtered_df = data.loc[(data['Date'].dt.day == 8)]
如果需要数据集,请让我知道。我试图弄清楚,但如果有任何疑问,请让我知道。任何帮助在正确的方向是感谢。
1条答案
按热度按时间dpiehjr41#
备选方案1
重新采样为每日分辨率,选择最近的一天来填充缺失值:
备选方案2
一个更通用的方法(也更快一点)是生成您选择的日期/时间,然后使用
reindex()
和方法'nearest'
。它更通用,因为您可以使用您能想到的任何一系列时间戳(不一定与任何频率对齐)。示例
让我们从一个可重现的示例开始:
现在:
警告
用“未来”的数据(即最近的一天在缺失的一天之后)替换缺失的一天,这被称为“超前峰值”,在使用该数据的量化研究中,这可能会导致“超前峰值偏差”,通常被认为是危险的,使用
method='ffill'
会更安全。