如何基于指定日期筛选Pandas日内DatetimeIndex时间序列数据
pandas日内DataFrame按指定日期筛选最优方案
- 方案1:normalize匹配(性能最优,推荐)
代码:intraday_df = intraday_df[intraday_df.index.normalize().isin(days)]
说明:normalize()方法会自动将DatetimeIndex的时分秒部分清零,和你的days对象格式完全对齐,无需额外做类型转换,处理百万行以上数据时性能优势非常明显。 - 方案2:date属性直接匹配(写法最简洁)
代码:intraday_df = intraday_df[intraday_df.index.date.isin(days.date)]
说明:你原有写法冗余了手动构造Series的步骤,直接调用索引的date属性获取日期数组即可直接做isin匹配,逻辑清晰易懂。另外注意你原有写法中的days.index.date存在语法错误,days本身是DatetimeIndex对象,没有index属性,直接写days.date即可。 - 你尝试的agg写法调整方案(不推荐,性能较差)
代码:intraday_df[intraday_df.index.to_series().agg(lambda x: x.date()).isin(days.date)]
说明:通过lambda匿名函数即可调用date方法,但逐行调用lambda属于非向量化操作,效率远低于前两种方案,仅做语法参考不建议实际使用。
内容的提问来源于stack exchange,提问作者Eugene
相关产品推荐
相关产品推荐

