Python 只保留带有日期的行
我从excel导入了一个非常混乱的数据框,其中只有一些行在第一列中包含日期(索引0,没有标题)。如何删除所有不包含日期的行 我会使用Python 只保留带有日期的行,python,pandas,Python,Pandas,我从excel导入了一个非常混乱的数据框,其中只有一些行在第一列中包含日期(索引0,没有标题)。如何删除所有不包含日期的行 我会使用pd.to_datetime和errors='concurve',然后通过索引删除空日期: 例如: >>> df x y 0 2011-02-03 1 1 x 2 2 1 3 3 2012-03-03 4 >>> df[pd.to_datetime(d
pd.to_datetime
和errors='concurve'
,然后通过索引删除空日期:
例如:
>>> 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\u datetime
与errors='concurve'
一起使用,将查找类似日期的字符串,如果未找到,则返回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
将其用作原始数据帧上的掩码将有助于向我们展示您的尝试。此外,您能否提供一些示例数据和预期输出(请参阅)。很难想象什么是日期,什么是没有任何数据的日期。
df[df.date.notnull()]
因此我一直在尝试选择字符串中包含类似日期的内容的位置,即.df.loc[df[0].str.contains('2017',na=False)],但该方法返回空的df请发布一个数据帧示例和所需的输出。另外,我也不明白为什么这是一个不充分的答案,在这里和其他场合。答案当然是猜测问题,但有教育意义。因此,如果你想责怪某人,就责怪OP,而不是花时间解释解决方案的人。我认为,只要所有格式都可以在不使用格式
arg的情况下自动推断出来,pandas.to_datetime()
仍然会毫无问题地解析具有多种格式的列。比如说<代码> df=PD(DataFrame)({0},‘03-04-1988’,‘1988年3月4日’,‘3月4日’1988’,‘03.04.1988’,‘3/4’/88’,‘03/04’/1988’})< /代码>将被正确处理。@ ALollz,同意,在这种情况下,它可能起作用,但是考虑DATAFRAM:<代码> DF= Pd。DataFrame({日期):[ [ 2011-13-03’,'2012-03-13'}])< /COD>,其中第一个是YYYY-DD-MM,第二个是YYYY-MM-DD。在本例中,它不会解析所有被认为是“类似日期”的内容