python - Dask 2.1.0, key 错误 : 'Column not found: 0'

标签 python pandas dataframe dask dask-distributed

我正在使用 dask 读取大型 csv 数据文件,并尝试对生成的数据帧执行 groupby。但是,我继续收到

KeyError:“未找到列:0”

在生成的 dask 数据帧上

我已在 Dask 1.2.2 和 2.1.0 上复制了该问题。我在同一数据帧上没有看到 Pandas 的问题。我在所有情况下都使用 Python 3.6

为了帮助说明问题,我已经能够简化代码并在更简单的数据集上复制问题。

import pandas as pd
from dask import dataframe as dd
from dask import multiprocessing
from dask.distributed import Client

client = Client(processes=False)

data = {
    'col1': [1, 1, 1, 2, 2, 2, 3, 3, 3],
    'col2': ['apple','bananna','orange','apple','bananna','orange','apple','bananna','orange'],
    'col3': [34, 12, 1, 36, 22, 6, 22, 16, 4]
    }
pdf = pd.DataFrame(data=data)
print('*************  Pandas DataFrame')
print(pdf.head(5))

print('')
print('Performing groupby on Pandas DataFrame')
pgroup = pdf.groupby(by='col2')
for name, group in pgroup:
    print('')
    print(f'Group: {name}')
    print(group.head(5))


print(' ')
print(' ')


ddf = dd.from_pandas(data=pdf, npartitions=1)
print('*************  Dask DataFrame')
print(ddf.head(5))

print('')
print('Performing groupby on Dask DataFrame')
dgroup = ddf.groupby(by='col2')
for name, group in dgroup:
    print('')
    print(f'Group: {name}')
    print(group.head(5))

我希望 dask 数据帧提供与 Pandas 结果相同的 groupby 结果。但是,我收到以下输出和错误

*************  Pandas DataFrame
   col1     col2  col3
0     1    apple    34
1     1  bananna    12
2     1   orange     1
3     2    apple    36
4     2  bananna    22

Performing groupby on Pandas DataFrame

Group: apple
   col1   col2  col3
0     1  apple    34
3     2  apple    36
6     3  apple    22

Group: bananna
   col1     col2  col3
1     1  bananna    12
4     2  bananna    22
7     3  bananna    16

Group: orange
   col1    col2  col3
2     1  orange     1
5     2  orange     6
8     3  orange     4


*************  Dask DataFrame
   col1     col2  col3
0     1    apple    34
1     1  bananna    12
2     1   orange     1
3     2    apple    36
4     2  bananna    22

Performing groupby on Dask DataFrame
Traceback (most recent call last):
  File "C:\Users\Craig\source\repos\cevans3098\MarketData_preProcessor\module1.py", line 37, in <module>
    for name, group in dgroup:
  File "F:\anaconda3\lib\site-packages\dask\dataframe\groupby.py", line 1525, in __getitem__
    g._meta = g._meta[key]
  File "F:\anaconda3\lib\site-packages\pandas\core\base.py", line 275, in __getitem__
    raise KeyError("Column not found: {key}".format(key=key))
KeyError: 'Column not found: 0'

最佳答案

DataFrameGroupBy.__iter__ 尚未为 Dask Dataframe 实现:https://github.com/dask/dask/issues/5124

关于python - Dask 2.1.0, key 错误 : 'Column not found: 0' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57245764/

相关文章:

R:根据满足条件的另一列的值将值分配给新列

python - 如何在保留其他列的同时分解字符串列表?

python - 如何使用 "{foo} {bar} {baz}"等命名占位符动态检查格式字符串

python - 索引和列上的 pandas df.rename 并不总是有效

python - Pandas dataframe 在不同的 dataframe 中查找一个值并赋值

python - 用 Pandas 中的空白替换重复值

r - 将匹配 NA 的 df 的字符行与所有内容进行比较,并根据比较创建新列或 df

python - 将 DataFrame 拆分为两个 DataFrame 并过滤这两个 DataFrame 以获得相同的维度

字符串的 Python 循环 - 为什么会出现 'none'?

python - NLTK ConllCorpusReader 中的 NE 标签