python对于数据表按照变量得分表进行映射,并汇总

python对于数据表按照变量得分表进行映射,并汇总

在做评分卡时,需要进行得分映射,但是得分区间是一个比较特殊的形式,查了查叫Interval,直接是一个区间,想了挺久的,用一个极其笨蛋的方式,写了一个得分映射函数,记录一下。

首先生成示例数据

描述不太精准,先生成示例数据,这样看起来清晰一些
下面生成的是甲和乙两个特征的数值

    data1 = {
    
        "甲":[3,18,7,19],
    
        "乙":[13,15,21,23]
    
    }
    
    df1 = pd.DataFrame(data1)
    
    df1

数据表

得分映射表

data2 = {
    "名称":['甲','甲','乙','乙'],
    "区间":[pd.Interval(1, 15, closed='right'),pd.Interval(15, 20, closed='right'),pd.Interval(10, 20, closed='right'),pd.Interval(20, 25, closed='right')],
    "分数":[3,5,7,9]
}
df2 = pd.DataFrame(data2)
df2

得分区间表

映射函数

    def MapScore(df1,df2,name,Interval_name,s):
        '''
        df1:原数据
        df2:得分映射表
        name:'特征名称'
        Interval_name:'区间名称'
        s:'分数'
        '''
        name = df2[name]
        Interval = Interval_name
        s = s
        all_score = []
        for i in df1.index:
            score_all = 0
            for j in list(set(name)):  
                qz = list(df2[name == j][Interval])
                for k in range(len(qz)):
                    score = 0
                    if df1[j][i] in qz[k]:
                        score_list = list(df2[name==j][s])
                        score += score_list[k]
                    score_all += score          
            all_score.append(score_all)
        df1['总分'] = all_score
        return df1
    MapScore(df1,df2,'名称','区间','分数')

效果

在这里插入图片描述
知识有限,写的比较笨蛋,有待优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱挠静香的下巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值