将dask转换为pandas数据框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将dask转换为pandas数据框相关的知识,希望对你有一定的参考价值。

我对此有一个非常相似的问题: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='	', 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:在pd.read_csv / pd.read_table中发现不匹配的dtypes。

如何避免这种情况?我有超过32列,所以我无法预先设置dtypes。作为提示,它也被编写为:在导入时指定dtype选项或设置low_memory = False

答案

当Dask加载CSV时,它会尝试从文件的标头导出dtype,然后假定文件的其余部分的每一列都具有相同的dtype。来自csv的正弦熊猫类型取决于所看到的值集,这是错误的来源。

[要解决,您必须明确告诉dask需要什么类型,或者增加dask尝试从(sample=)中猜测类型的部分的大小。

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

另一答案

也许尝试一下:

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

以上是关于将dask转换为pandas数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据读取到 dask 数据帧并删除坏行

将大型 Dask 数据框与小型 Pandas 数据框合并

将Dask包的Pandas DataFrame转换为单个Dask DataFrame

在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame

如何将 Dask.DataFrame 转换为 pd.DataFrame?

在具有非唯一索引列日期的 Dask 数据框中提取最新值