我有以下数据集,您可以使用此代码复制:
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)
我需要写一段代码,通过for循环或groupby生成以下结果:
代码应该在列“number_orders”上执行groupby,然后取列“number_fakeorders”的最小值,但每次都应该迭代地排除列“number_fakeorders”中已经选择的最小值。然后,如果没有更多的可用值,则应输入“无”。
这是逐行的解释:
**1)“number_orders”= 2:**这里“number_fakeorders”的值是“1”,它只是“number_fakeorders”的最小值,其中[“number_orders”= 2],因为它是出现的第一个值
**2)“number_orders”= 3:**这里“number_fakeorders”的值是“2”,因为已经为[“number_orders”= 2]选择了“1”,所以排除“1”,其中[“number_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”已经被选择
3条答案
按热度按时间kq0g1dla1#
尝试:
图纸:
注意:您可以在处理之前对 Dataframe 进行排序(如果尚未排序):
jc3wubiy2#
循环
groupby
对象并记录每组中的前一个最小值r55awzrz3#
这里是另一个选项:
输出: