Dask: AttributeError: 'DataFrame' object has no attribute '_getitem_array'

Dask: AttributeError: 'DataFrame' object has no attribute '_getitem_array'

我在 S3 存储桶上有一些数据想要使用。

我使用以下方法导入它:

import boto3
import dask.dataframe as dd

def import_df(key):
        s3 = boto3.client('s3')
        df = dd.read_csv('s3://.../' + key ,encoding='latin1')
        return df

key = 'Churn/CLEANED_data/file.csv'
train = import_df(key)

我可以看到数据已正确导入使用:

train.head()

但是当我尝试简单操作时(taken from this dask doc):

train_churn = train[train['CON_CHURN_DECLARATION'] == 1]
train_churn.compute()

我有错误:

AttributeError Traceback (most recent call last) in ()

1 train_churn = train[train['CON_CHURN_DECLARATION'] == 1]

----> 2 train_churn.compute()

~/anaconda3/envs/python3/lib/python3.6/site-packages/dask/base.py in compute(self, **kwargs) 152 dask.base.compute 153 """ --> 154 (result,) = compute(self, traverse=False, **kwargs) 155 return result 156

AttributeError: 'DataFrame' object has no attribute '_getitem_array'

此处出现完整错误:Error Upload

如果它是 'CON_CHURN_DECLARATION' 上的逐行选择,您应该能够使用 :

过滤数据框
train_churn = train[train.CON_CHURN_DECLARATION==1]

我在尝试读取 s3 文件时遇到了类似的问题,最终通过将 dask 更新到最新版本解决了(我认为默认情况下以 one sagemaker 实例开头的已弃用)

Install/Upgrade 包和依赖项(来自笔记本)

! python -m pip install --upgrade dask
! python -m pip install fsspec
! python -m pip install --upgrade s3fs

希望对您有所帮助!

您可能使用的是旧版本的 dask。安装版本 2.13.0 为我解决了这个问题。

我对 dask(2.14.0 版)也有同样的问题。重新安装 dask 解决了我的问题。我相信以前安装的版本一定有问题。