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

标签 python pandas loops group-by iteration

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

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/

相关文章:

python - 我的 Python 代码没有写入我的文件。为什么?

r - 在R中使用带有多个参数的匿名函数

python - 使用 python 读取 XLS 文件时出错(小端序)

python - 我的模块有 __init__.py 但 Python 仍然无法导入它

__getinitargs__ 的 Python 3 替代方案

python - pyspark。生成随机数的转换器始终生成相同的数字

python - 如何使pandas数据框的列号从1而不是0开始

python - Python中基于列名的Dataframe到List of List的转换

java - 运行循环时出现 Selen 错误

python - 谷歌CP : Where to schedule PubSub subscriber which writes to BigQuery