熊猫分组根据条件进行计数

狮子座

我正在尝试在数据框中添加一列,以便为我提供客户帐户上的退货类型的计数。

数据框如下所示:

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')
熊熊

您可以使用groupbyCustomerID再算上与行的数量'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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章