dask read_csv upcasts bool to object

时间:2017-04-27 15:07:08

标签: python pandas dask

我正在使用月度交易文件,我必须对其进行一整年的分析,这不适合内存。所以我使用dask来做到这一点。

首先,我在pandas中处理我的文件,这样它就是大小最有效的数据帧(11列,3个bool和8个int),并将这些写入pandas的csv。如果我通过熊猫重读它们,那么这些类型应该与它们相匹配。但是,如果我在via Dask中读取它,则会将3个bool列作为对象输入,这会占用更多内存。

我检查了它是否是混合类型的问题,但是因为我在pandas中创建了bool列,添加了一个启动值为False的新列,然后根据某些条件将此值更改为True我没有找到任何缺失值或无。

我还尝试将dtypes添加到read_csv命令中,该命令应该将其传递给pandas read_csv,但这并没有改变类型,它们最终仍然是对象。

有没有办法解决这个问题,还是我错过了什么?

-Milan

编辑: @MRocklin 我做的不仅仅是以下几点:

import dask.dataframe as dd

import pandas as pd

Transaction_folder = 'localpath/Transactions_*.csv.bz2'

trans_reader = pd.read_csv('localpath/Transactions_2016.csv.bz2', nrows = 100000) #to check if reading in 1 file via pandas works as expected

trans_reader.dtypes # gives bools and ints as expected

然后:

df = dd.read_csv(Transaction_folder, compression = 'bz2')

df.dtypes # gives ints and floats for the right columns but objects for everything that was bool

可能是因为压缩吗?

0 个答案:

没有答案