【发布时间】: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 可能不会检查每个文件的架构。