gpt4 book ai didi

python - 在 Python 中,我需要执行一个访问前一个 "grouped value"的迭代 groupby 来建立聚合列的行的值

转载 作者:行者123 更新时间:2023-12-05 03:19:58 24 4
gpt4 key购买 nike

我有以下数据集,您可以使用此代码复制:

number_order = [2,2,3,3,5,5,5,6]
number_fakecouriers = [1,2,1,2,1,2,3,3]
dictio = {"number_order":number_order, "number_fakecouriers":number_fakecouriers}
actual_table = pd.DataFrame(dictio)

enter image description here

我需要编写一段代码,通过 for 循环或 groupby 生成以下结果:

enter image description here

代码应在“number_orders”列上执行 groupby,然后取“number_fakeorders”列中的最小值,但每次都应迭代地排除已选择的“number_fakeorders”列中的最小值。然后,如果没有更多可用值,则应输入“无”。

这是一行一行的解释:

1) "number_orders"= 2 : 这里 "number_fakeorders"的值为 "1",它只是 "number_fakeorders"的最小值,其中 ["n​​umber_orders"= 2] , 因为它是第一个出现的值

2) "number_orders"= 3 : 这里 "number_fakeorders"的值为 "2"因为已经为 ["number_orders"= 2] 选择了 "1",所以排除 "1 ",其中 ["n​​umber_orders"= 3] 最小值为 "2"

3) "number_orders"= 5 : 这里 "number_fakeorders"的值为 "3"因为已经选择了 "1"和 "2"

4) "number_orders"= 6 : 这里 "number_fakeorders"的值是 "None"因为 ["number_orders"= 6] 的 "number_fakeorders"的唯一值是 "3",并且已经选择了“3”

最佳答案

尝试:

def fn(x, seen):
for v in x:
if v in seen:
continue
seen.add(v)
return v


out = (
actual_table.groupby("number_order")["number_fakecouriers"]
.apply(fn, seen=set())
.reset_index()
)
print(out)

打印:

   number_order  number_fakecouriers
0 2 1.0
1 3 2.0
2 5 3.0
3 6 NaN

注意:您可以在处理之前对数据帧进行排序(如果尚未排序):

actual_table = actual_table.sort_values(
by=["number_order", "number_fakecouriers"]
)

...

关于python - 在 Python 中,我需要执行一个访问前一个 "grouped value"的迭代 groupby 来建立聚合列的行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73310927/

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