AttributeError:“Series”对象在Das中没有属性“columns”

2024-10-04 11:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,应该应用于一些数据帧来进行一些计算。由于数据帧很大,为了加快计算速度,我决定选择Dask进行并行pandas处理

我有以下代码: https://pastebin.com/Zh672Wei

主要问题在于这些线路:

crosses_data.apply((lambda row: calculate_vwap(row[0], row[1], row[2], vwap_data, row.name)), axis=1)

以上代码有效。 同一代码,但与dask并行化失败,错误为“Series”对象没有属性“columns”:

^{pr2}$

我使用了dask的官方文档,这个错误现在真的有意义了。在


Tags: 数据函数代码httpscompandasdata错误
1条回答
网友
1楼 · 发布于 2024-10-04 11:32:30

也许这是某种魔力,但解决办法是以下内容:。 calculate_vwap函数应该有一个输出:

def calculate_vwap(ric_id, interval_start, interval_finish, vwap_data, row_n):
    some_tmp_vwap_interval_data = \
        vwap_data.query(
            'TKER == @ric_id and interval > @interval_start and interval < '
            '@interval_finish '
        )[['IVWP', 'INTV']]
    if sum(some_tmp_vwap_interval_data['INTV']):
        return \
            sum(
                vwap * volume for vwap, volume in
                zip(some_tmp_vwap_interval_data['IVWP'],
                    some_tmp_vwap_interval_data['INTV'])
            ) \
            / sum(some_tmp_vwap_interval_data['INTV']), \
            some_tmp_vwap_interval_data.IVWP.iloc[0], \
            some_tmp_vwap_interval_data.IVWP.iloc[-1], \
            some_tmp_vwap_interval_data.INTV.sum()

    return None

之后,此输出应转换为数据帧:

^{pr2}$

相关问题 更多 >