仅保留有日期的行

时间:2018-07-25 17:48:02

标签: python pandas

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

1 个答案:

答案 0 :(得分:3)

我将pd.to_datetimeerrors='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_datetimeerrors='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

并将其用作原始数据框上的遮罩