我从excel导入了一个非常混乱的数据框,第一列中只有一些行包含日期(索引0,没有标题)。如何删除所有不包含日期的行?
答案 0 :(得分:3)
我将pd.to_datetime
与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_datetime
与errors='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
并将其用作原始数据框上的遮罩