首页 > 解决方案 > 使用 Dask 加载多个 CSV 文件时混合列

问题描述

我试图用 dask 导入一堆 csv 文件,看起来我的列混在一起了。

import pandas as pd
import dask.dataframe as dd
import numpy as np

names = ['date', 'country', 'A', 'B']

dtypes = {'booking_date': object, 'booking_country': object, 
      'A': object, 'B': np.float32}

dask_df = dd.read_csv("folder/file_*.csv", dtype=dtypes, 
                       header=None, names=names, skiprows=1)

数据框具有以下形状:

        date country    A         B
0  2019-07-24     ALB  XX  0.041786
1  2019-07-24     AND  XX  0.022168
2  2019-07-24     ARE  YY  0.177757
3  2019-07-24     ARM  YY  0.024475
4  2019-07-24     AUT  ZZ  0.287205

当我想继续使用它时,似乎 A 列和 B 列在某些列中混为一谈。有谁知道为什么会发生这种情况以及如何避免它?

如果我使用 glob.glob 创建文件列表,然后使用 pandas 循环遍历它,我就没有这个问题。难道这样做的全局方式是解释每个文件的标题,而 dask 不是,以防列混合在我的输入数据集中?

非常感谢您!

蒂姆

标签: pythonpandascsvdask

解决方案


谢谢您的帮助。

显然我的一些文件的列顺序错误,这是 dask 无法处理的。 https://github.com/d6t/d6tstack/blob/master/examples-dask.ipynb将解决这个问题,但我还没有时间测试它。


推荐阅读