我正在尝试在数据框中添加一列,以便为我提供客户帐户上的退货类型的计数。
数据框如下所示:
CustomerID Return$ Payment Method
000010 10 Credit Card
000010 15 Credit Card
000011 10 Check
000011 15 Credit Card
000011 10 Credit Card
这是预期的结果:
CustomerID Return$ Payment Method CC Return Count Check Return Count
000010 10 Credit Card 2 0
000010 15 Credit Card 2 0
000011 10 Check 2 1
000011 15 Credit Card 2 1
000011 10 Credit Card 2 1
这是我尝试过的代码,但是只给了我一个带有布尔值的列:
return_df['CC Boolean']= return_df.groupby(['CustomerID'])['Payment
Method'].apply(lambda x: x=='Credit Card')
不管使用哪种付款方式,这另一段代码都提供了付款总数:
return_df['Counter']= return_df.groupby('Customer ID')['Payment Method'].transform('count')
您可以使用groupby
上CustomerID
再算上与行的数量'Check'
,并'Credit Card'
为每一个客户。使用transform
将保留原始结构:
df['check'] = df.groupby('CustomerID')['Payment Method'].transform(lambda x: sum(x == 'Check'))
df['credit'] = df.groupby('CustomerID')['Payment Method'].transform(lambda x: sum(x == 'Credit Card'))
输出:
CustomerID Return$ Payment Method check credit
0 10 10 Credit Card 0 2
1 10 15 Credit Card 0 2
2 11 10 Check 1 2
3 11 15 Credit Card 1 2
4 11 10 Credit Card 1 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句