轻松应用:AttributeError:'DataFrame'对象没有属性'name'

Phi*_*ats 5 python dask

我有一个参数的数据框,并将函数应用于每一行。此函数本质上是几个sql_queries和对结果的简单计算。

我正在尝试利用Dask的多处理功能,同时保持结构和〜接口。以下示例可以工作,并且确实可以大大提高工作效率:

def get_metrics(row):

    record = {'areaName': row['name'],
              'areaType': row.area_type,
              'borough': row.Borough,
              'fullDate': row['start'],
              'yearMonth': row['start'],
              }


    Q = Qsi.format(unittypes=At,
                   start_date=row['start'],
                   end_date=row['end'],
                   freq='Q',
                   area_ids=row['descendent_ids'])

    sales = _get_DF(Q)
    record['salesInventory'] = len(sales)
    record['medianAskingPrice'] = sales.price.median()
    R.append(record)

R = []
x = ddf.map_partition(lambda x: x.apply(_metric, axis=1), meta={'result': None})
    x.compute()

result2 = pd.DataFrame(R)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用.applymethod代替时(见下文),它使我'DataFrame' object has no attribute 'name'...

R = list()
y = ddf.apply(_metrics, axis=1, meta={'result': None})
Run Code Online (Sandbox Code Playgroud)

但是,ddf.head()显示name数据帧中有一列

UN2*_*758 8

如果您的_metric函数的输出是一个系列,也许您应该使用meta=('your series's columns name','output's dtype')

这对我有用。

  • 抱歉,我已经有近两年没有使用 dask 了,我猜元参数告诉 dask 你想要使用的部分和输出类型,也许因为如果你不设置 dtype,dask 可能会推断出错误 dtpye (2认同)