我已经写了一个lambda函数用于Pandas的聚合函数,我如何在Dask的聚合函数中实现这个lambda函数?

vtwuwzda  于 2023-03-21  发布在  其他
关注(0)|答案(1)|浏览(118)

我写了一个自定义的lambda函数,需要在dataframe中的groupby操作之后应用。lambda函数将所有唯一字符串连接在一起,并使用适当的joiner,如“,”。我试图在Python的Dask库中实现相同的功能。然而,我得到了下面的错误信息。有人能指导我如何在Dask中实现这个lambda函数吗?

Pandas实现:

A = pd.DataFrame(data = {"A": ["saad", "saad", "saad", "saad", "nimra", "asad", "nimra", "nimra", "asad"],
                         "B": ["hello", "hello", "saad", "whatsup?", "yup", "nup", "saad", "saad", "nup"],
                         "C": ["hello", "hello", "saad", "whatsup?", "yup", "nup", "saad", "saad", "nup"]
                        }
                )
A.groupby("A")["B"].unique().apply(', '. join)
A.groupby("A").agg(lambda s: ', '.join(s.unique()))

This code works perfectly fine and produces the correct output:
        B                       C
A       
asad    nup                     nup
nimra   yup, saad               yup, saad
saad    hello, saad, whatsup?   hello, saad, whatsup?

Dask实现

我尝试在Dask中使用以下代码实现它:
x一个一个一个一个x一个一个二个x

kwvwclae

kwvwclae1#

您可以改用dask.dataframe.apply函数。

from dask import dataframe as dd

def agg_fn(x):
    return pd.Series(
        dict(
            B = "%s" % ', '.join(x['B'].unique()), # string (concat strings)
            C = "%s" % ', '.join(x['C'].unique())
        )
    )

A_1.groupby('A').apply(agg_fn, meta=pd.DataFrame(columns=['B', 'C'], dtype=str)).compute()

相关问题