【问题标题】:How to group orders based on their numbers如何根据订单数量对订单进行分组
【发布时间】:2021-05-17 09:00:19
【问题描述】:

我有一个数据框(df_orderlines),它按订单号对多个产品进行分组。我正在尝试为拾取者创造一个波浪来拾取这些产品。如果一次只有一个订单,我设法做到了,但我想动态地做到这一点。我怎样才能做到这一点?目前我有这个。

    if (orders_number == 1 ):
        df_orderlines['WaveID'] = df_orderlines.OrderID.fillna(0).astype(int) - 1
    else:
        for i in range(orders_number):
            df_orderlines['WaveID'] = (df_orderlines.OrderID % orders_number == 0).shift(1).fillna(0).cumsum()

当同时挑选两个订单时,它会输出这样的数据帧

OrderNumber TimeStamp Coord OrderID WaveID
1 2019-11-02 12:00 0,7 1.0 0
1 2019-11-02 12:00 1,8 1.0 0
1 2019-11-02 12:00 0,8 1.0 0
2 2019-11-02 12:10 3,10 2.0 0
2 2019-11-02 12:10 2,9 2.0 1
3 2019-11-02 12:20 5,24 3.0 2
3 2019-11-02 12:20 2,12 3.0 2
3 2019-11-02 12:20 3,43 3.0 2
4 2019-11-02 12:30 6,24 4.0 2
4 2019-11-02 12:30 3,30 4.0 3

但它应该看起来像这样

OrderNumber TimeStamp Coord OrderID WaveID
1 2019-11-02 12:00 0,7 1.0 0
1 2019-11-02 12:00 1,8 1.0 0
1 2019-11-02 12:00 0,8 1.0 0
2 2019-11-02 12:10 3,10 2.0 0
2 2019-11-02 12:10 2,9 2.0 0
3 2019-11-02 12:20 5,24 3.0 1
3 2019-11-02 12:20 2,12 3.0 1
3 2019-11-02 12:20 3,43 3.0 1
4 2019-11-02 12:30 6,24 4.0 1
4 2019-11-02 12:30 3,30 4.0 1

【问题讨论】:

  • 你能提供一个数据框样本吗?
  • 我正在使用一个 .txt 文件,其中包含我为测试而创建的数据。初始数据框应如下所示 OrderNumber |时间戳 |坐标|数据已经在问题上

标签: python pandas dataframe


【解决方案1】:

我设法做到了,这可能不是最有效的方式,但确实有效。

    if (orders_number == 1 ):
        df_orderlines['WaveID'] = df_orderlines.OrderID.fillna(0).astype(int) - 1
    else:
       df_orderlines['WaveID'] = ((df_orderlines.OrderID + (orders_number-1)) // orders_number) - (orders_number-(orders_number -1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2019-05-06
    • 2019-11-22
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多