Mic*_*ael 2 datetime python-3.x pandas parquet
我正在尝试读取此处找到的镶木地板格式的 02-2019 fhv 数据
https://d37ci6vzurychx.cloudfront.net/trip-data/fhv_tripdata_2019-02.parquet
但是当我尝试用 Pandas 读取数据时
df = pd.read_parquet('fhv_tripdata_2019-02.parquet')
Run Code Online (Sandbox Code Playgroud)
它抛出错误:
File "pyarrow/table.pxi", line 1156, in pyarrow.lib.table_to_blocks
File "pyarrow/error.pxi", line 99, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: Casting from timestamp[us] to timestamp[ns] would result in out of bounds timestamp: 33106123800000000
Run Code Online (Sandbox Code Playgroud)
有谁知道如何打印出有问题的行或强制这些值?让它忽略这些行?
该数据集中的某一行的 dropOff 设置为3019-02-03 17:30:00.000000。这超出了 的范围pandas.Timestamp。我认为这本来就是2019-02-03 17:30:00.000000。
一种选择是忽略该错误:
import pyarrow.parquet as pq
df = pq.read_table('fhv_tripdata_2019-02.parquet').to_pandas(safe=False)
Run Code Online (Sandbox Code Playgroud)
但是错误的时间戳将会溢出并具有一些奇怪的值:
>>> df['dropOff_datetime'].min()
Timestamp('1849-12-25 18:20:52.580896768')
Run Code Online (Sandbox Code Playgroud)
或者,您可以过滤掉 pyarrow 中超出范围的值:
>>> df['dropOff_datetime'].min()
Timestamp('1849-12-25 18:20:52.580896768')
Run Code Online (Sandbox Code Playgroud)