将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包的Pandas DataFrame转换为单个Dask DataFrame
在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame