我一直在清理这个销售数据库,其中的数据是从多个来源收集的,账单编号很混乱,但它们是唯一将多个订单引用到同一张账单的列,但随着时间的推移使用不同的系统会导致账单编号重复。要解决此问题,我需要为日期不同的帐单编号单元格提供一个新编号,例如,如果我有一张帐单编号为 1,日期为 2019 年,而另一张帐单的帐单编号相同,但在 2018 年,我需要给它一个不同的账单号码。df 的样本: bill_no item_ser date item size price0 1 111 2018-12-15 15:09:50 Rockla Salad R 39.001 1 111 2018-12-15 15:09:50 Rockla Salad R 39.002 1 112 2018-12-15 15:10:16 Tea R 8.003 1 112 2018-12-15 15:10:16 Tea R 8.004 1 309 2019-02-21 10:02:24 Eggs Toast R 35.005 1 309 2019-02-21 10:02:24 Eggs Toast R 35.006 1 1 2020-07-20 12:38:16 Nody's Sfilatino R 99.757 1 1 2020-07-20 12:38:16 Nody's Sfilatino R 99.758 1 2715 2020-05-06 01:13:41 Basilico Buffalo - R R 110.009 1 2715 2020-05-06 01:13:41 Basilico Buffalo - R R 110.0010 1 2716 2020-05-06 01:13:41 Timmy's Merguez - R R 130.0011 1 2716 2020-05-06 01:13:41 Timmy's Merguez - R R 130.0012 1 2717 2020-05-06 01:13:41 Funghi - R R 105.0013 1 2717 2020-05-06 01:13:41 Funghi - R R 105.0014 1 2718 2020-05-06 01:13:41 Extra Cheese R 20.0015 1 2718 2020-05-06 01:13:41 Extra Cheese R 20.0016 1 8 2020-07-05 16:27:37 Margherita - R R 65.0017 1 8 2020-07-05 16:27:37 Margherita - R R 65.0018 1 9 2020-07-05 16:27:39 Extra Vegetables R 10.0019 1 9 2020-07-05 16:27:39 Extra Vegetables R 10.00我尝试过 for 循环,但有 150K 行,这需要很多时间。
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
# 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 df
df = df.merge(df1, on=['bill_no', 'date'], how='left'])
添加回答
举报
0/150
提交
取消