Ошибка Dask Dataframe: у объекта «Future» нет атрибута «drop» - PullRequest
1 голос
/ 02 мая 2019

Я новичок в Даске.Я создал dask dataframe, удалил несколько столбцов с помощью команды drop.После этого я выполняю дополнительные операции.Когда я вызываю compute, получаю ошибку: у объекта «Future» нет атрибута «drop».

Вызов compute () сразу после команды drop работает нормально, но когда я вызываю его через несколько операторов после, это выдает мне эту ошибку.Пожалуйста, предложите, что здесь не так.

Кстати, я использую dask, распространяемый на моей локальной машине, и версия 1.2.1.

import dask.dataframe as dd  
from dask.distributed import Client  
client = Client()   
df = dd.read_csv("XYZ.csv", sep="\t",low_memory=False) #Its about 3 GB in size   
df = df.persist() #Data is split ito 47 partitions   

list_of_columns_to_delete = ['ABC', 'AXY', 'JDR']    

df = df.drop(list_of_columns_to_delete, axis=1, errors=True)   

df.EngineSpeed.mean().compute() #this works fine and computes the mean   
df = df[(df.Time < "23:59:59") ]   
df = df[df.EngineSpeed > 605]   
df = df[df.ServiceBrakeCircuit1AirPressure.notnull()]   
df = df[df.ServiceBrakeCircuit2AirPressure.notnull()]   
df.GpsSpeed = df.GpsSpeed.where(df.GpsSpeed < 111,111)    
df.GpsSpeed.mean().compute() #This gives 'Future' object has no attribute 'drop' error`     

Пожалуйста, подскажите, что означает ошибка и какэто можно исправить.

1 Ответ

1 голос
/ 04 мая 2019

Я попытался выдать ошибку с подобным набором данных, и все работало нормально

In [1]: import dask

In [2]: df = dask.datasets.timeseries()

In [3]: from dask.distributed import Client

In [4]: client = Client()

In [5]: df = df.persist()

In [6]: df
Out[6]:
Dask DataFrame Structure:
                   id    name        x        y
npartitions=30
2000-01-01      int64  object  float64  float64
2000-01-02        ...     ...      ...      ...
...               ...     ...      ...      ...
2000-01-30        ...     ...      ...      ...
2000-01-31        ...     ...      ...      ...
Dask Name: make-timeseries, 30 tasks

In [7]: df = df.drop(['x', 'name'], axis=1, errors=True)

In [8]: df.y.mean().compute()
Out[8]: 0.00012229375505932677

Я рекомендую производить MCVE

...