簡體   English   中英

將熊貓對象轉換為timedelta會導致NaT

[英]Converting pandas object to timedelta results in NaT

我有一個包含三列的DataFrame,一個日期和兩次。 就像這樣:

         date hour_in hour_out
0  01/06/2016        08:15      19:37   
1  02/06/2016        08:26      17:31   
2  03/06/2016        08:08      21:31

我正在嘗試使用此代碼將hour_inhour_out轉換為timedelta(這是基於以下問題的答案: 使用df ['Time'] = pd.to_datetime之后,將1900-01-01的日期添加到我的“ Time”中(phData ['Time'],format ='%H:%M:%S') ):

df['hora_entrada'] = pd.to_timedelta(df['hora_entrada'], errors='coerce')
df['hora_saida']  = pd.to_timedelta(df['hora_saida'] , errors='coerce')

timedelta64[ns]轉換后,我的列將轉換為正確的timedelta64[ns] ,但所有值均設置為NaT 我的df.info()返回以下內容:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 439 entries, 0 to 438
Data columns (total 4 columns):
data            439 non-null datetime64[ns]
hour_in         0 non-null timedelta64[ns]
hour_out        0 non-null timedelta64[ns]
dtypes: datetime64[ns](1), timedelta64[ns](2)

數據輸出是這樣的:

          data hora_entrada hora_saida
0   2016-06-01          NaT        NaT
1   2016-06-02          NaT        NaT
2   2016-06-03          NaT        NaT

我試圖將時間列轉換為datetime時間,然后轉換為時間timedelta但結果timedelta奇怪。 這是一個例子:

          data          hora_entrada            hora_saida
0   2016-06-01 -25567 days +08:15:00 -25567 days +19:37:00
1   2016-06-02 -25567 days +08:26:00 -25567 days +17:31:00
2   2016-06-03 -25567 days +08:08:00 -25567 days +21:31:00

我認為這是因為當我將其轉換為datetime時,會在datetime加上1900-01-01這個日期。

考慮以下方法:

In [24]: pd.to_timedelta(df.hour_in + ':00', errors='coerce')
Out[24]:
0   08:15:00
1   08:26:00
2   08:08:00
Name: hour_in, dtype: timedelta64[ns]

暫無
暫無

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

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