You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter中移除DataFrame中2020年2月29日的所有时间行?

移除DataFrame中2020年2月29日所有行的解决方案

这问题我碰到过好多次啦,原来的条件只精准匹配了当天零点的那一行,自然漏掉了其他时段的数据。下面给你几个靠谱的解决办法,都能一次性移除2020-02-29全天的所有行:

方法1:提取日期部分直接判断

先确保你的时间列是datetime类型(如果不是,先用pd.to_datetime(df['你的时间列名'])转换),然后通过dt.date提取日期部分,再筛选掉目标日期:

import datetime
import pandas as pd

# 假设你的时间列名为'datetime_col'
df = df[df['datetime_col'].dt.date != datetime.date(2020, 2, 29)]

方法2:按年/月/日组合筛选

通过dt.year、dt.month、dt.day分别匹配日期的各个部分,用取反操作排除目标日期:

df = df[~((df['datetime_col'].dt.year == 2020) & 
          (df['datetime_col'].dt.month == 2) & 
          (df['datetime_col'].dt.day == 29))]

这里的~符号表示"取反",也就是保留不满足这三个条件同时成立的行。

方法3:用时间范围排除

生成2020-02-29的起始和结束时间,筛选不在这个区间内的行:

start_date = '2020-02-29'
end_date = '2020-03-01'
# inclusive='left'表示包含start_date但不包含end_date,刚好覆盖2020-02-29全天
df = df[~df['datetime_col'].between(start_date, end_date, inclusive='left')]

这三种方法都能完美解决你的问题,选哪种看个人习惯就行。如果是大数据集,方法2或3的性能会稍微好一点,但日常使用差别不大~

内容的提问来源于stack exchange,提问作者Pete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 19:33:10