重新定义销售数据库中的索引列

我一直在清理这个销售数据库,其中的数据是从多个来源收集的,账单编号很混乱,但它们是唯一将多个订单引用到同一张账单的列,但随着时间的推移使用不同的系统会导致账单编号重复。


要解决此问题,我需要为日期不同的帐单编号单元格提供一个新编号,例如,如果我有一张帐单编号为 1,日期为 2019 年,而另一张帐单的帐单编号相同,但在 2018 年,我需要给它一个不同的账单号码。


df 的样本:


       bill_no  item_ser                date                  item size   price

0         1       111 2018-12-15 15:09:50          Rockla Salad    R   39.00

1         1       111 2018-12-15 15:09:50          Rockla Salad    R   39.00

2         1       112 2018-12-15 15:10:16                   Tea    R    8.00

3         1       112 2018-12-15 15:10:16                   Tea    R    8.00

4         1       309 2019-02-21 10:02:24            Eggs Toast    R   35.00

5         1       309 2019-02-21 10:02:24            Eggs Toast    R   35.00

6         1         1 2020-07-20 12:38:16      Nody's Sfilatino    R   99.75

7         1         1 2020-07-20 12:38:16      Nody's Sfilatino    R   99.75

8         1      2715 2020-05-06 01:13:41  Basilico Buffalo - R    R  110.00

9         1      2715 2020-05-06 01:13:41  Basilico Buffalo - R    R  110.00

10        1      2716 2020-05-06 01:13:41   Timmy's Merguez - R    R  130.00

11        1      2716 2020-05-06 01:13:41   Timmy's Merguez - R    R  130.00

12        1      2717 2020-05-06 01:13:41            Funghi - R    R  105.00

13        1      2717 2020-05-06 01:13:41            Funghi - R    R  105.00

14        1      2718 2020-05-06 01:13:41          Extra Cheese    R   20.00

15        1      2718 2020-05-06 01:13:41          Extra Cheese    R   20.00

16        1         8 2020-07-05 16:27:37        Margherita - R    R   65.00

17        1         8 2020-07-05 16:27:37        Margherita - R    R   65.00

18        1         9 2020-07-05 16:27:39      Extra Vegetables    R   10.00

19        1         9 2020-07-05 16:27:39      Extra Vegetables    R   10.00

我尝试过 for 循环,但有 150K 行,这需要很多时间。


胡子哥哥
浏览 102回答 1
1回答

肥皂起泡泡

# Get new_bill_no on the basis of [bill_no, date]df1 = df[['bill_no', 'date']].drop_duplicates().reset_index()df1.rename({'index': 'new_bill_no'}, axis=1, inplace=True)# On Merging you will get new_bill_no in original dfdf = df.merge(df1, on=['bill_no', 'date'], how='left'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python