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