dask apply: AttributeError: 'DataFrame' object has no attribute 'name'
dask apply: AttributeError: 'DataFrame' object has no attribute 'name'
我有一个参数数据框,并对每一行应用一个函数。这个函数本质上是一对 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)
但是,当我尝试改用 .apply
方法时(见下文),它会抛出 'DataFrame' object has no attribute 'name'
...
R = list()
y = ddf.apply(_metrics, axis=1, meta={'result': None})
然而,ddf.head() 显示数据框中有一个 name
列
如果您的 _metric
函数的输出是一个系列,也许您应该使用 meta=('your series's columns name','output's dtype')
这对我有用。
我有一个参数数据框,并对每一行应用一个函数。这个函数本质上是一对 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)
但是,当我尝试改用 .apply
方法时(见下文),它会抛出 'DataFrame' object has no attribute 'name'
...
R = list()
y = ddf.apply(_metrics, axis=1, meta={'result': None})
然而,ddf.head() 显示数据框中有一个 name
列
如果您的 _metric
函数的输出是一个系列,也许您应该使用 meta=('your series's columns name','output's dtype')
这对我有用。