Python 如何获得熊猫群比中的行业损失率

Python 如何获得熊猫群比中的行业损失率,python,pandas,dataframe,group-by,count,Python,Pandas,Dataframe,Group By,Count,我想使用pandas groupby()总结一个在行业级别上具有丢失率的数据帧 我的数据表如下所示: 类型包含不同的行业,好的坏的=0表示不良贷款,好的坏的=1表示良好贷款 type | good_bad food | 0 food | 0 food | 1 Retail | 1 Retail | 1 Retail | 1 Retail | 0 我想创建一个新列损失率,它根据每个行业的坏账发生率计算损失率,并除以行业总数

我想使用pandas groupby()总结一个在行业级别上具有丢失率的数据帧

我的数据表如下所示: 类型包含不同的行业,好的坏的=0表示不良贷款,好的坏的=1表示良好贷款

type    | good_bad
food    |    0
food    |    0
food    |    1
Retail  |    1
Retail  |    1
Retail  |    1
Retail  |    0
我想创建一个新列损失率,它根据每个行业的坏账发生率计算损失率,并除以行业总数:

type    | good_bad  | lost_rate   | (calculation on how it works)
food    |    0      |     0.667   | (2/3)
food    |    0      |     0.667   | (2/3)
food    |    1      |     0.667   | (2/3)
Retail  |    1      |     0.25    | (1/4)
Retail  |    1      |     0.25    | (1/4)
Retail  |    1      |     0.25    | (1/4)
Retail  |    0      |     0.25    | (1/4)
我可以分别得到分子和分母,但我不知道如何将它们组合在一起:

分子:
df.loc[df['good\u bad']==0,'type'].value\u counts().reset\u index(name='counts')

分母:
df['type'].值计数().重置索引()

我还尝试创建一个函数并应用于数据帧,但无法开始工作:

    def industry_lost_rate(df):
        count = df.loc[loan_data['good_bad']==0, 'type'].value_counts()
        industry_sum = df['type'].value_counts()
        rate = count / industry_sum
        return pd.DataFrame({"count":count, "rate": rate})

df2 = df.groupby('type')['good_bad'].apply(industry_lost_rate(df)).reset_index()

有人能告诉我如何获得丢失率吗?提前谢谢

您可以尝试groupby
键入
列,并使用
转换
计算各组中
好_坏
列的平均值

df['lost_rate']=1-df.groupby('type')['good_bad'].transform('mean').round(3)
print(df)

     type  good_bad  lost_rate
0    food         0      0.667
1    food         0      0.667
2    food         1      0.667
3  Retail         1      0.250
4  Retail         1      0.250
5  Retail         1      0.250
6  Retail         0      0.250