筛选出Python数据帧中格式不正确的日期时间值

筛选出Python数据帧中格式不正确的日期时间值,python,pandas,dataframe,datetime,plotly,Python,Pandas,Dataframe,Datetime,Plotly,我有一个数据框,其中一列存储日期 但是,其中一些日期是格式正确的datetime对象,如'2018-12-24 17:00:00',而其他日期则不是,并存储为'20181225' 当我尝试使用plotly绘制这些时,格式不正确的值被转换为历元日期,这是一个问题 是否有任何方法可以获得数据框的副本,其中只包含格式正确的日期行 我试着用 clean_dict= dailySum_df.where(dailySum_df[isinstance(dailySum_df['time'],datetime.

我有一个数据框,其中一列存储日期

但是,其中一些日期是格式正确的datetime对象,如
'2018-12-24 17:00:00'
,而其他日期则不是,并存储为
'20181225'

当我尝试使用plotly绘制这些时,格式不正确的值被转换为历元日期,这是一个问题

是否有任何方法可以获得数据框的副本,其中只包含格式正确的日期行

我试着用

clean_dict= dailySum_df.where(dailySum_df[isinstance(dailySum_df['time'],datetime.datetime)])
方法,但由于“数组条件必须与self的形状相同”错误,它无法工作

    dailySum_df = pd.DataFrame(list(cursors['dailySum']))

    trace = go.Scatter(
        x=dailySum_df['time'],
        y=dailySum_df['countMessageIn']

    )
    data = [trace]
    py.plot(data, filename='basic-line')

尝试使用dateutil.parser.parse和apply函数解析数据帧的dates列


尝试使用dateutil.parser.parse和apply函数解析数据帧的dates列


应用
dateutil.parser
,另请参见我的答案:

输入:

                  time  countMessageIn
0  2018-12-24 17:00:00               1
1             20181225               2
2       no date at all               3
输出:

                 time  countMessageIn
0 2018-12-24 17:00:00               1
1 2018-12-25 00:00:00               2
与Gustavo的解决方案不同,它可以处理完全没有可识别日期的行,并根据您的问题过滤掉这些行


如果原始时间列可能包含日期本身以外的其他文本,请包括所示的
fuzzy=True
参数。

应用
dateutil.parser
,另请参见我的答案:

输入:

                  time  countMessageIn
0  2018-12-24 17:00:00               1
1             20181225               2
2       no date at all               3
输出:

                 time  countMessageIn
0 2018-12-24 17:00:00               1
1 2018-12-25 00:00:00               2
与Gustavo的解决方案不同,它可以处理完全没有可识别日期的行,并根据您的问题过滤掉这些行


如果原始时间列可能包含日期之外的其他文本,请包括所示的
fuzzy=True
参数。

谢谢,这很有效!很抱歉,我花了这么长时间才回复并接受。谢谢,这很有效!很抱歉,我花了这么长时间才回复并接受。