首页 > 解决方案 > 在数据框中删除 X 列值为日期时间的行

问题描述

我需要删除列 X 值为日期时间的行。

我试过这个

from pandas.api.types import is_datetime64_any_dtype as is_datetime
indexNames = df[is_datetime(df['Column X'])].index
df.drop(indexNames, inplace=True)

但它返回

关键错误:假

下面的这个也不起作用(没有错误)

indexNames = df[df['Column X'] == is_datetime(df['Column X'])].index

我仍然有这样的值 datetime.datetime(2016, 6, 29, 8, 24, 19)

我发现了一个相关的问题,但倒置的Pandas 删除了所有不是“日期时间”类型的行

你有什么想法吗?

标签: pythonpandasdataframe

解决方案


使用to_datetimewitherrors='coerce'将非 datetimelike 转换为s,因此按inNaN过滤:Series.isnaboolean indexing

df = df[pd.to_datetime(df['Column X'], errors='coerce').isna()]

但有时熊猫会识别一些整数,例如2000日期时间,因此如果可能更准确的是指定日期时间的格式,例如这里YYYY-MM-DD

df = df[pd.to_datetime(df['Column X'], errors='coerce', format='%Y-%m-%d').isna()]

推荐阅读