gpt4 book ai didi

python - Dask 在 Groupby 上复制 Pandas 值

转载 作者:行者123 更新时间:2023-11-28 21:40:37 26 4
gpt4 key购买 nike

我想做的是在 dask 中复制 panda 的值计数 + idxmax 函数,因为我有很多数据。这是一个示例数据框:

partner_num cust_id item_id revw_ratg_num   revw_dt item_qty
0 100 01 5 05/30/2000 0
0 100 03 5 05/30/2000 0
0 100 02 5 05/30/2000 0
1 200 13 4 04/01/2000 0
1 200 14 5 04/01/2000 1
2 200 22 2 04/01/2000 1
3 200 37 3 04/01/2000 1
9 300 92 1 03/24/2000 1
9 300 93 1 03/24/2000 1
9 300 94 1 03/24/2000 0
9 300 99 1 03/24/2000 0
6 300 91 2 03/24/2000 0

>>>df.head()
partner_num cust_id item_id revw_ratg_num revw_dt item_qty
0 0 100 1 5 05/30/2000 0
1 0 100 3 5 05/30/2000 0
2 0 100 2 5 05/30/2000 0
3 1 200 13 4 04/01/2000 0
4 1 200 14 5 04/01/2000 1

在 pandas 中你可以这样做:

df = pd.read_csv("fake_data.txt", sep="\t")
df.groupby(["cust_id"]).item_qty.value_counts()

cust_id item_qty
100 0 3
200 1 3
0 1
300 0 3
1 2

但是,当你在 Dask 中做同样的事情时,它失败了,抛出一个属性错误

df1 = dd.read_csv("fake_data.txt", sep="\t")
df1.groupby(["cust_id"]).item_qty.value_counts()

Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
df1.groupby(["cust_id"]).item_qty.value_counts()
AttributeError: 'SeriesGroupBy' object has no attribute 'value_counts''

我真正想要做的是能够在 Dask 中获得这两个值,以及它们在多列 groupby 之后的出现次数。任何替代解决方案都是可以接受的,我只想完成工作!

最佳答案

value_countsdask API 中不直接支持对于数据框。使用 apply 实现您想要的结果。

请注意 value_counts支持作为系列方法。

>>> df1.groupby(['cust_id']).item_qty.apply(lambda x: x.value_counts()).compute()
cust_id
100 0 3
200 1 3
0 1
300 0 3
1 2
Name: item_qty, dtype: int64

关于python - Dask 在 Groupby 上复制 Pandas 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45442832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com