值错误:计算数据中的列与提供的元数据中的列不匹配



我正在 kaggle 竞赛中处理一个有 550 万行的数据集。在熊猫中阅读.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')

运行时 线条;

test_df.to_csv('df_test.csv')
train_df.to_csv('df_train.csv')

产生错误

ValueError: The columns in the computed data do not match the columns
in the provided metadata

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

N.B First time using Dask.

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

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

相关内容

最新更新