pandas groupby中的自定义聚合函数

pandas groupby中的自定义聚合函数,pandas,group-by,aggregate-functions,mean,Pandas,Group By,Aggregate Functions,Mean,我有一个如下所示的数据帧 Client Month Amount ABC 201601 -4563 BHG 201602 321 HTD 201601 -5234 BTD 201603 342 ERT. 201601 234 我想知

我有一个如下所示的数据帧

    Client          Month        Amount
     ABC           201601       -4563
     BHG           201602          321
     HTD           201601       -5234
     BTD            201603         342
     ERT.            201601        234
我想知道每个月有多少客户的金额为负数。它应该是总客户的百分比,例如201601第2个月的客户金额为负,而一个客户的金额为正,因此比率应该是2/3(总客户金额为负)/(该特定月份的总客户),如wise

我使用以下代码,但它不工作

  df.groupby('Month')['Client'].count()

我想你需要
mean
创建的布尔掩码
xif I groupby multiple columns上面的逻辑会改变吗?我必须测试一下,给我一点时间。我认为它能与多列一起工作也很好。我需要一个特定月份的客户数量与客户总数成负比例。我不确定是否理解,还需要别的吗?您能否更改示例并添加所需的输出或进行更多解释?非常感谢。
df = df.groupby('Month')['Amount'].apply(lambda x: 100 * (x<0).mean())
print (df)
Month
201601    100.0
201602      0.0
201603      0.0
Name: Amount, dtype: float64
df = df.groupby('Month')['Amount'].apply(lambda x: 100 * (x<0).mean())
print (df)
Month
201601    66.666667
201602     0.000000
201603     0.000000
Name: Amount, dtype: float64
df = df.groupby(['Month', 'Client'])['Amount'].apply(lambda x: 100 * (x<0).mean())
print (df)
Month   Client
201601  ABC       100.0
        HTD       100.0
201602  BHG         0.0
201603  BTD         0.0
Name: Amount, dtype: float64