ValueError:计算数据中的列与提供的元数据中的列不匹配

Aca*_*cia 5 python python-3.x dask

我正在 kaggle 比赛中处理一个包含 550 万行的数据集。在 Pandas 中读取 .csv 并处理它们需要几个小时。

来了。Dask 速度很快,但有很多错误。

这是代码片段,

#drop some columns
df = df.drop(['dropoff_latitude', 'dropoff_longitude','pickup_latitude', 'pickup_longitude', 'pickup_datetime' ], axis=1)


# In[ ]:


#one-hot-encode cat columns
df = dd.get_dummies(df.categorize())


# In[ ]:


#split train and test and export as csv
test_df = df[df['fare_amount'] == -9999]
train_df = df[df['fare_amount'] != -9999]

test_df.to_csv('df_test.csv')
train_df.to_csv('df_train.csv')
Run Code Online (Sandbox Code Playgroud)

运行线路时;

test_df.to_csv('df_test.csv')
train_df.to_csv('df_train.csv')
Run Code Online (Sandbox Code Playgroud)

产生错误

ValueError: The columns in the computed data do not match the columns
in the provided metadata
Run Code Online (Sandbox Code Playgroud)

什么可能导致这种情况,我该如何阻止它。

N.B First time using Dask.
Run Code Online (Sandbox Code Playgroud)

mdu*_*ant 2

文档字符串了从 CSV 读取时如何出现这种情况。很可能,如果你这样做了len(dd.read_csv(...)),你就会已经看到它了,没有掉落、假人和火车分裂。错误消息可能会准确地告诉您哪些列有问题,以及预期的类型与发现的类型。

发生的情况是 dask 从第一个文件的第一个块猜测数据帧的数据类型。有时这并不能反映整个数据集的类型:例如,如果某列碰巧在第一个块中没有值,则其类型将为float64,因为 pandas 使用nanNULL 占位符。在这种情况下,您需要确定正确的数据类型,并read_csv使用dtype=关键字提供它们。请参阅 pandas 文档,了解 data parsing.conversion 的典型用法dtype=和其他参数,这些参数可能在加载时有所帮助。