我遇到了與這個問題相同的錯誤,但推薦的設定解決方案blocksize=None并沒有為我解決問題。我正在嘗試將紐約出租車資料從 CSV 轉換為 Parquet,這是我正在運行的代碼:
ddf = dd.read_csv(
"s3://nyc-tlc/trip data/yellow_tripdata_2010-*.csv",
parse_dates=["pickup_datetime", "dropoff_datetime"],
blocksize=None,
dtype={
"tolls_amount": "float64",
"store_and_fwd_flag": "object",
},
)
ddf.to_parquet(
"s3://coiled-datasets/nyc-tlc/2010",
engine="pyarrow",
compression="snappy",
write_metadata_file=False,
)
這是我得到的錯誤:
"ParserError: Error tokenizing data. C error: Expected 18 fields in line 2958, saw 19".
blocksize=None有時添加幫助,例如參見此處,我不確定為什么它不能解決我的問題。
關于如何解決這個問題的任何建議?
此代碼適用于 2011 年的出租車資料,因此它們在 2010 年的出租車資料中一定是一些奇怪的東西導致了這個問題。
uj5u.com熱心網友回復:
原始檔案s3://nyc-tlc/trip data/yellow_tripdata_2010-02.csv包含錯誤(逗號過多)。這是違規行(中間)及其鄰居:
VTS,2010-02-16 08:02:00,2010-02-16 08:14:00,5,4.2999999999999998,-73.955112999999997,40.786718,1,,-73.924710000000005,40.841335000000001,CSH,11.699999999999999,0,0.5,0,0,12.199999999999999
CMT,2010-02-24 16:25:18,2010-02-24 16:52:14,1,12.4,-73.988956000000002,40.736567000000001,1,,,-73.861762999999996,40.768383999999998,CAS,29.300000000000001,1,0.5,0,4.5700000000000003,35.369999999999997
VTS,2010-02-16 07:58:00,2010-02-16 08:09:00,1,2.9700000000000002,-73.977469999999997,40.779359999999997,1,,-74.004427000000007,40.742137999999997,CRD,9.3000000000000007,0,0.5,1.5,0,11.300000000000001
一些選項是:
on_bad_lineskwarg 到 pandas 可以設定為warnorskip(所以這也應該可以用dask.dataframe;sed使用類似(假設您可以修改原始檔案)或通過逐行讀取檔案來即時修復原始檔案(知道錯誤在哪里) 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417050.html
標籤:
