2 votes

Dask 2.1.0, KeyError : 'Colonne non trouvée : 0'

Je lis de gros fichiers de données csv à l'aide de dask et j'essaie d'effectuer un groupby sur le dataframe résultant. Cependant, je continue à recevoir

KeyError : 'Colonne non trouvée : 0'

sur le dataframe dask résultant

J'ai reproduit le problème sur Dask 1.2.2 et 2.1.0. Je ne vois pas le problème avec Pandas sur la même base de données. J'utilise Python 3.6 dans tous les cas.

Pour illustrer le problème, j'ai pu simplifier le code et reproduire le problème sur un ensemble de données beaucoup plus simple.

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))

Je me serais attendu à ce que le dataframe dask fournisse le même résultat groupby que les résultats Pandas. Cependant, j'ai reçu la sortie et l'erreur suivantes

*************  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'

3voto

TomAugspurger Points 14350

DataFrameGroupBy.__iter__ n'est pas encore implémenté pour Dask Dataframe : https://github.com/dask/dask/issues/5124

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X