使用Python Pandas按相似性对数据帧进行排序

时间:2019-02-27 20:45:52

标签: python pandas sorting

也许我那里有类似的东西,而我只是没有使用正确的搜索词。我在下面有一个工作功能,这是一个解释。我最大的问题是速度很慢,我希望熊猫已经有内置功能了。

我基本上是在尝试编写一个函数,该函数将查看客户订单数据,按时间选择第一个订单并将其存储在新的数据框中,然后查看该订单的项目并从所有集合中查找订单共享项目最多的订单到第一个选定订单。然后,第三阶将是集合中具有最多共享项且已找到两个阶的集合中的阶,直到新数据帧中有n个阶为止。一旦新数据框中有n个订单,它将寻找与这n个订单共享项目最多的订单,并填充新的数据帧。重要的是该函数仅查看最后n个订单,而不查看所有放置在新数据帧中的订单,因为这将只放置下一个找到的订单,因为订单集中有太多共享项目。 / p>

而len(uOrders)> 0:

    if len(orderHolder['OrderID'].unique())< nOpen:

        maxLikeness=0
        removeThis=uOrders[0]
        for i in uOrders:

            if len(orders[(orders['OrderID']==i) & (orders['SKU'].isin(orderHolder['SKU'].unique()))]) >maxLikeness:

                maxLikeness= len(orders[(orders['OrderID']==i) & (orders['SKU'].isin(orderHolder['SKU'].unique()))])
                removeThis= i

        orderHolder=orderHolder.append(orders[orders['OrderID']==removeThis])
        print(len(uOrders))
        toRemove= np.array([removeThis])
        uOrders= np.setdiff1d(uOrders, toRemove)
        print(len(uOrders))
    else:
        maxLikeness=0
        removeThis=uOrders[0]
        lastFew= orderHolder.OrderID[-nOpen:]
        for i in uOrders:
            if len(orders[(orders['OrderID']==i) & (orders['SKU'].isin(orderHolder[orderHolder.OrderID.isin(lastFew)]['SKU'].unique()))]) >maxLikeness:
                maxLikeness= len(orders[(orders['OrderID']==i) & (orders['SKU'].isin(orderHolder['SKU'].unique()))])
                removeThis= i
        orderHolder=orderHolder.append(orders[orders['OrderID']==removeThis])
        toRemove= np.array([removeThis])
        print(len(uOrders))
        uOrders= np.setdiff1d(uOrders, toRemove)
        print(len(uOrders))

0 个答案:

没有答案