gpt4 book ai didi

python-3.x - Pandas read_parquet() 错误 : pyarrow. lib.ArrowInvalid:从时间戳 [us] 转换到时间戳 [ns] 将导致时间戳超出范围

转载 作者:行者123 更新时间:2023-12-03 08:00:25 33 4
gpt4 key购买 nike

我正在尝试读取此处找到的 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')

它抛出错误:

  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

有谁知道如何打印出有问题的行或强制这些值?让它忽略这些行?

最佳答案

该数据集中的某一行的 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)

但是错误的时间戳将会溢出并具有一些奇怪的值:

>>> df['dropOff_datetime'].min()
Timestamp('1849-12-25 18:20:52.580896768')

或者,您可以过滤掉 pyarrow 中超出范围的值:

import pyarrow as pa
import pyarrow.parquet as pq
import pyarrow.compute as pc

table = pq.read_table("fhv_tripdata_2019-02.parquet")
df = table.filter(
pc.less_equal(table["dropOff_datetime"], pa.scalar(pd.Timestamp.max))
).to_pandas()

关于python-3.x - Pandas read_parquet() 错误 : pyarrow. lib.ArrowInvalid:从时间戳 [us] 转换到时间戳 [ns] 将导致时间戳超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74467923/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com