【发布时间】:2020-01-30 06:21:21
【问题描述】:
我有一个包含 1000 行和 2 列的数据。一列带有 CustomerID,另一列带有值。我需要创建一个函数来分 5 组中的值。我需要使用的分箱过程如下。所有值 = 1 将被赋予一个分数 = 1。对于剩余的值,将采用它们的平均值,低于平均值的值将被赋予 2 分。此外,对于剩余的值(未评分),将采用它们的平均值,低于平均值的值将被赋予 score=3。很快。
【问题讨论】:
我有一个包含 1000 行和 2 列的数据。一列带有 CustomerID,另一列带有值。我需要创建一个函数来分 5 组中的值。我需要使用的分箱过程如下。所有值 = 1 将被赋予一个分数 = 1。对于剩余的值,将采用它们的平均值,低于平均值的值将被赋予 2 分。此外,对于剩余的值(未评分),将采用它们的平均值,低于平均值的值将被赋予 score=3。很快。
【问题讨论】:
假设 5 个 bin 得分不计算,剩余项目得分为 0。
import pandas as pd
import numpy as np
cid = np.arange(1,1001)
score = np.zeros(1000, dtype=int)
values = np.random.randint(0,100,1000)
df = pd.DataFrame({'CID':cid, 'Values':values, 'Score':score})
df.loc[df['Values'] == 1, 'Score'] = 1
for i in range(2,6):
mean = df.loc[df['Score'] ==0, 'Values'].mean()
df.loc[(df['Score'] == 0) & (df['Values']<mean), 'Score'] = i
print(df)
【讨论】: