繁体   English   中英

将 dask 转换为 pandas dataframe

[英]Convert dask to pandas dataframe

我有一个与此非常相似的问题: Dask read_csv-- Mismatched dtypes found in `pd.read_csv`/`pd.read_table`

我正在运行以下脚本:

import pandas as pd
import dask.dataframe as dd
df2 = dd.read_csv("Path/*.csv", sep='\t', encoding='unicode_escape', sample=2500000)
df2 = df2.loc[~df2['Type'].isin(['STVKT','STKKT', 'STVK', 'STKK', 'STKET', 'STVET', 'STK', 'STKVT', 'STVVT', 'STV', 'STVZT', 'STVV', 'STKV', 'STVAT', 'STKAT', 'STKZT', 'STKAO', 'STKZE', 'STVAO', 'STVZE', 'STVT', 'STVNT'])]
df2 = df.compute()

我得到以下错误: ValueError: Mismatched dtypes found in pd.read_csv / pd.read_table

我怎样才能避免这种情况? 我有超过 32 列,所以我无法预先设置 dtypes。 作为提示,还写了:Specify dtype option on import or set low_memory=False

当 Dask 加载您的 CSV 时,它会尝试从文件的 header 派生数据类型,然后假设 rest 的每个文件的列类型具有相同的部分。 来自 csv 的正弦 pandas 类型取决于看到的一组值,这就是错误的来源。

要解决此问题,您要么必须明确告诉 dask 期望什么类型,要么增加 dask 尝试从 ( sample= ) 猜测类型的部分的大小。

错误消息应该告诉您哪些列不匹配以及找到的类型,因此您只需要指定这些即可使事情正常进行。

也许试试这个:

df = pd.DataFrame()
df = df2.compute()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM