首页 > 解决方案 > 只保留带日期的行

问题描述

我有一个从 excel 导入的非常混乱的数据框,其中只有一些行包含第一列中的日期(索引 0,没有标题)。如何删除所有不包含日期的行?

标签: pythonpandas

解决方案


我会使用pd.to_datetimewith errors='coerce',然后通过索引删除空日期:

例如:

>>> df
            x  y
0  2011-02-03  1
1           x  2
2           1  3
3  2012-03-03  4

>>> df[pd.to_datetime(df.x, errors='coerce').notnull()]
            x  y
0  2011-02-03  1
3  2012-03-03  4

注意:如果您的列中有不同的日期格式,这将导致一些问题

说明

使用pd.to_datetimewitherrors='coerce'将查找类似日期的字符串,NaT如果找不到则返回(为空):

>>> pd.to_datetime(df.x, errors='coerce')
0   2011-02-03
1          NaT
2          NaT
3   2012-03-03
Name: x, dtype: datetime64[ns]

因此,您可以使用以下方法获取所有非空值notnull

>>> pd.to_datetime(df.x, errors='coerce').notnull()
0     True
1    False
2    False
3     True
Name: x, dtype: bool

并将其用作原始数据框的掩码


推荐阅读