在Dask中使用分组依据

时间:2019-05-23 20:21:21

标签: python-3.x pandas pandas-groupby dask

我正在尝试使用dask将大型csv文件(9GB)分成几组,然后将每个组复制到单独的csv文件中。

这就是我要用熊猫做的事情

gb2 = df2.groupby('Type')    
n = [gb2.get_group(x) for x in gb2.groups]

n[0].to_csv("FileByType 1.csv",index=False)

进行了一些研究,这是我在网上看到的解决方案

df = dd.read_csv(filename)

def Group(df, col):
    m = []   
    for group in df[col].unique().compute():
        m.append(df.groupby(col).get_group(group))
    return m

grps = Split(file, "Types")
count = 0
for i in grps:
    count = count+1
    i.compute().to_csv(str(count) + " FileByTypes.csv", index=False)

这是我尝试解决方案时不断收到的错误消息。关键错误是我要分组的列名称的第一个字母。

  

_get_grouper中的C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ groupby \ groupby.py(obj,键,轴,级别,排序,观察,变异,验证)
  
3289 in_axis,名称,级别,gpr = False,无,gpr,无   
3290其他:   
-> 3291引发KeyError(gpr)      
3292 elif isinstance(gpr,Grouper)和gpr.key不是None:      
3293#将密钥添加到排除项   

KeyError:'T'

我到了这一点,因为我在一个较小的文件上尝试过,但是当我在9GB的大文件上尝试时,它会永远持续下去,因为它必须先计算  (用于df [col] .unique()。compute():中的组)

非常感谢您的帮助!

0 个答案:

没有答案