如何在Pandas中删除Date列为指定日期(4/1/2022)的行?
解决方案:删除datetime类型列中指定日期的行
由于你的Date列是datetime64[ns]类型,不能使用字符串方法str.contains来筛选日期,直接与构造的datetime对象比较即可实现需求。
方法1:布尔索引直接筛选
构造目标日期的datetime对象,筛选出不等于该日期的行:
import pandas as pd # 若Date列还未转为datetime类型,先执行转换 # df['Date'] = pd.to_datetime(df['Date']) # 筛选非目标日期的行 new_df = df[df['Date'] != pd.to_datetime('4/1/2022')]
方法2:通过索引删除目标行
先定位目标日期对应的行索引,再删除这些行:
target_date = pd.to_datetime('4/1/2022') # 获取目标日期的行索引 drop_indices = df[df['Date'] == target_date].index # 删除指定索引的行 new_df = df.drop(drop_indices)
验证结果
运行上述代码后,new_df的输出符合预期:
ID Date 0 AA 2022-01-01 1 BB 2022-01-01
原方法失效原因
str.contains是字符串类型列的专属方法,对datetime类型列调用str属性时,pandas会返回全为NaN的序列,导致筛选条件无法正确匹配目标行,因此无法删除指定日期的数据。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

