【问题标题】:Mixed up columns when loading multiple CSV-Files with Dask使用 Dask 加载多个 CSV 文件时混合列
【发布时间】:2019-04-09 02:02:08
【问题描述】:

我尝试使用 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 不是,以防列在我的输入数据集中混合?

非常感谢您!

提姆

【问题讨论】:

  • 嘿@Tim,欢迎来到 StackOverflow!你能告诉我们这个“混合”的数据框是什么样的吗?
  • 谢谢! :) 列将是日期、国家/地区、B、A 而不是日期、国家/地区、A、B ...如果我使用 glob.glob 创建文件列表并使用常规 for 循环,则不会出现此问题.但是我需要弄清楚输入文件是否始终具有相同的架构。 (谈到数百个文件,这就是为什么不那么直接检查的原因)
  • 酷,我认为这实际上是我的问题。谢谢你:) github.com/d6t/d6tstack/blob/master/examples-dask.ipynb
  • 您可以尝试将 dtypes 作为 OrderedDict 提供吗?
  • 嘿,我做到了,但这并没有解决问题。我的一些输入数据文件的列顺序错误,dask 可能不会检查每个文件的架构。

标签: python pandas csv dask


【解决方案1】:

感谢您的帮助。

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

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多