簡體   English   中英

嘗試除塊無法與日期時間對象一起使用?

[英]Try Except block not working with datetime object?

我有一個DataFrame,其中一列包含一些日期時間數據,而其他列則包含其他內容。 但是,有些數據被弄亂了,例如:

11/11/2014 22:28    15.1
11/11/2014 22:29    16.1
11/11/2014 22:30    15.2
bollocks            10000
11/11/2014 22:32    15.4
:00                 
11/11/2014 22:34    15.3

我想擺脫混亂的局面。 現在,我決定只將它們替換為NaN值(但是刪除它們也將有所幫助,只是它在循環中不起作用,所以這不是問題,在下一步中,我可以只使用dropna() )。 我正在使用try()來執行此操作,但是異常無法正常工作。 我的代碼如下所示:

for line in df.ix[:,"DATETIME"]:    
    try:
        line = datetime.datetime.strptime(line,"%d/%m/%Y %H:%M")
    except ValueError:
        line = 'NaN'
    except TypeError:
        line = 'NaN'

但是最后,我仍然收到ValueError: time data '156004E00F455AA' does not match format '%d/%m/%Y %H:%M' ,並且故障行未替換為NaN 怎么了 (我還嘗試將錯誤放在這樣的一行上: except (ValueError, TypeError):也不起作用...)

將列轉換為日期時間時, pd.to_datetime可以設置為NaT格式錯誤的數據。

pd.to_datetime(df['DATETIME'], format = '%d/%m/%Y %H:%M', errors='coerce')

           DATETIME
0  11/11/2014 22:28
1  11/11/2014 22:29
2  11/11/2014 22:30
3               NaT
4  11/11/2014 22:32
5               NaT
6  11/11/2014 22:34

這不能嚴格回答您的查詢,但是如果您確定所有有效的日期時間字符串都將采用以下格式: "%d/%m/%Y %H:%M" ,則可以執行以下操作:

In [34]: df
Out[34]: 
           DATETIME   VALUES
0  11/11/2014 22:28     15.1
1  11/11/2014 22:29     16.1
2  11/11/2014 22:30     15.2
3          bollocks  10000.0
4  11/11/2014 22:32     15.4
5               :00      NaN
6  11/11/2014 22:34     15.3

In [35]: df = df.replace(r'^(?!\d{2}/\d{2}/\d{4} \d{2}:\d{2}).*', np.nan, regex=True)

In [36]: df
Out[36]: 
           DATETIME   VALUES
0  11/11/2014 22:28     15.1
1  11/11/2014 22:29     16.1
2  11/11/2014 22:30     15.2
3               NaN  10000.0
4  11/11/2014 22:32     15.4
5               NaN      NaN
6  11/11/2014 22:34     15.3

In [37]: df['DATETIME'].apply(lambda x: pd.to_datetime(x, format="%d/%m/%Y %H:%M"))
Out[37]: 
0   2014-11-11 22:28:00
1   2014-11-11 22:29:00
2   2014-11-11 22:30:00
3                   NaT
4   2014-11-11 22:32:00
5                   NaT
6   2014-11-11 22:34:00
Name: DATETIME, dtype: datetime64[ns]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM