簡體   English   中英

“超出納秒時間戳”? 你如何避免這個錯誤?

[英]"Out of bounds nanosecond timestamp"? How do you avoid this error?

我有一個數組,被識別為“numpy.ndarray 對象”,它在運行以下代碼時打印以下 output:

with sRW.SavReaderNp('C:/Users/Sam/Downloads/Data.sav') as reader:
record = reader.all()
print(record)

Output:

[(b'61D8894E-7FB0-3DE6-E053-6C04A8C01207', b'Sam', 250000., '2019-08-05T00:00:00.000000')
 (b'61D8894E-7FB0-3DE6-E053-6C04A8C01207', b'James',  250000., '2019-08-05T00:00:00.000000')
 (b'61D8894E-7FB0-3DE6-E053-6C04A8C01207', b'Mark', 250000., '0001-01-01T00:00:00.000000')

我真的很想使用 pd.DataFrame 格式處理 pandas DataFrame 格式中的空日期變量,但是當我運行以下代碼時,會出現錯誤(如下所示)

SPSS_df = pd.DataFrame(record)

錯誤:“超出納秒時間戳:1-01-01 00:00:00”

我已經閱讀了 SavReader Module Documentation 的源代碼,它說如果找不到 Datetime 值,則分配以下日期:

datetime.datetime(datetime.MINYEAR, 1, 1, 0, 0, 0)

我想知道如何在不遇到此錯誤的情況下處理此日期,或者更改/操作上面的代碼?

您可以做的是將所有記錄作為字符串(對象)讀取,然后將列轉換為所需的類型(浮點數和日期時間)

import numpy as np
import pandas as pd

record = [
    (
        b'61D8894E-7FB0-3DE6-E053-6C04A8C01207',
        b'Sam',
        250000.0,
        '2019-08-05T00:00:00.000000',
    ),
    (
        b'61D8894E-7FB0-3DE6-E053-6C04A8C01207',
        b'James',
        250000.0,
        '2019-08-05T00:00:00.000000',
    ),
    (
        b'61D8894E-7FB0-3DE6-E053-6C04A8C01207',
        b'Mark',
        250000.0,
        '0001-01-01T00:00:00.000000',
    ),
]

SPSS_df = pd.DataFrame(record, dtype=object).rename(
    {2: 'some_float', 3: 'dates'}, axis='columns'
).assign(
    some_float=lambda x: x['some_float'].astype(np.float),
    dates=lambda x: pd.to_datetime(x['dates'], errors='coerce'),
)

這給出了:

0  b'61D8894E-7FB0-3DE6-E053-6C04A8C01207'    b'Sam'    250000.0 2019-08-05
1  b'61D8894E-7FB0-3DE6-E053-6C04A8C01207'  b'James'    250000.0 2019-08-05
2  b'61D8894E-7FB0-3DE6-E053-6C04A8C01207'   b'Mark'    250000.0        NaT

和類型:

SPSS_df.dtypes
0                     object
1                     object
some_float           float64
dates         datetime64[ns]

暫無
暫無

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

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