Python 如何按不同字段识别保单续签
我想做的是计算不同销售树的续约次数 在编号为“015 ABN”的情况下,客户始终与同一家“公司”续约两次,与“老板2”续约两次,但与不同的“卖家”(卖家1、卖家2)续约 这就是我试过的 data['renewal']=(np.where(data.NumberPlate==data.NumberPlate.shift(),1,np.nan)) 这个信息告诉我,当我只比较两年的时候,有一个对我有效的装修,但我不知道如何考虑销售树的领域 另一个让我有点复杂的问题是续约日期的不同。在减法中,我将其与data['difference']=(np.where(data.NumberPlate==data.NumberPlate.shift(),data.Expedition_Date.diff(),np.nan))一起使用 这将创建一个差值为天的字段,但返回的值为“366天04:01:19.177000000”,但我必须减去以天为单位显示的年份。我必须减去365天 我在每次登记中提出三个不同的案例。一些客户忠诚于与公司续约,其他客户与老板续约,其他客户与卖家续约 如果你能帮我,我将不胜感激Python 如何按不同字段识别保单续签,python,pandas,numpy,if-statement,where-clause,Python,Pandas,Numpy,If Statement,Where Clause,我想做的是计算不同销售树的续约次数 在编号为“015 ABN”的情况下,客户始终与同一家“公司”续约两次,与“老板2”续约两次,但与不同的“卖家”(卖家1、卖家2)续约 这就是我试过的 data['renewal']=(np.where(data.NumberPlate==data.NumberPlate.shift(),1,np.nan)) 这个信息告诉我,当我只比较两年的时候,有一个对我有效的装修,但我不知道如何考虑销售树的领域 另一个让我有点复杂的问题是续约日期的不同。在减法中,我将其与d
seller sellers_boss Company NumberPlate Expedition_Date effective_date year difference renewal_Company Renewal_sellers_boss Renewal_seller
Seller 1 Boss 1 Global Company_1 015ABN 2015-05-14 08:37:48.000 2015-05-15 08:37:48.000 2015 0 1 1 1
Seller 1 Boss 2 Global Company_1 015ABN 2016-05-13 12:39:07.177 2016-05-15 08:37:48.000 2016 2 2 1 1
Seller 2 Boss 2 Global Company_1 015ABN 2017-05-12 17:01:39.900 2017-05-15 08:37:48.000 2017 3 3 2 1
Seller 1 Boss 1 Global Company_1 016ZYX 2015-05-15 08:37:48.000 2015-05-15 08:37:48.000 2014 0 1 1 1
Seller 1 Boss 1 Global Company_1 016ZYX 2016-05-12 12:39:07.177 2016-05-15 12:39:07.177 2015 3 2 2 2
Seller 1 Boss 1 Global Company_1 016ZYX 2017-05-11 17:01:39.900 2017-05-15 17:01:39.900 2016 4 3 3 3
Seller 1 Boss 1 Global Company_1 016ZYX 2018-05-14 17:01:39.900 2018-05-15 17:01:39.900 2017 1 4 4 4
Seller 1 Boss 1 Global Company_1 016ZYX 2019-05-15 17:01:39.900 2019-05-15 17:01:39.900 2018 0 5 5 5
Seller 1 Boss 1 Global Company_1 025ABC 2015-05-15 08:37:48.000 2015-05-15 08:37:48.000 2014 0 1 1 1
Seller 1 Boss 1 Global Company_1 025ABC 2016-05-13 12:39:07.177 2016-05-15 12:39:07.177 2015 2 2 2 2
Seller 2 Boss 1 Global Company_1 025ABC 2017-05-10 17:01:39.900 2017-05-15 17:01:39.900 2016 5 3 3 1
Seller 1 Boss 1 Global Company_2 025ABC 2018-05-14 17:01:39.900 2018-05-15 17:01:39.900 2017 4 1 1 1
Seller 1 Boss 1 Global Company_2 025ABC 2019-05-15 17:01:39.900 2019-05-15 17:01:39.900 2018 0 2 2 2
下一级
d=data.groupby(['Company','sellers_boss'])['NumberPlate'].apply(lambda x : x.ne(x.shift()).ne(0).cumsum())
data['Renewal_seller_boss']=data.groupby([data.sellers_boss,data.Company,d]).cumcount()+1
下一级
q=data.groupby(['Company','sellers_boss','seller'])['NumberPlate'].apply(lambda x : x.ne(x.shift()).ne(0).cumsum())
data['Renewal_seller']=data.groupby([data.Company,data.sellers_boss,data.seller,q]).cumcount()+1
你需要格式化你的问题。几乎不可能理解这些数据。使用控件k格式化代码和数据r=data.groupby(['Company'])['NumberPlate'].apply(lambda x:x.ne(x.shift()).ne(0.cumsum())data['Renewal_Company']=data.groupby([data.Company,r]).cumcount()+1此代码适用于此选项=data.groupby(['Company','sellers\u boss'])['NumberPlate']).apply(lambda x:x.ne(x.shift()).ne(0.cumsum())数据['Renewal\u sellers\u boss']=data.groupby([data['sellers\u boss',s]).cumcount()+1此选项无效k=data.groupby(['Company','sellers\u boss','sellers'])['NumberPlate'].apply(lambda x:x.ne(x.shift()).ne(0.cumsum())数据['Renewal\u sellers']=data.groupby([data['sellers',k]).cumcount()+1此选项无效
q=data.groupby(['Company','sellers_boss','seller'])['NumberPlate'].apply(lambda x : x.ne(x.shift()).ne(0).cumsum())
data['Renewal_seller']=data.groupby([data.Company,data.sellers_boss,data.seller,q]).cumcount()+1