gpt4 book ai didi

python - 使用 apply() 将 'value score' 添加到 pandas 中的客户数据。在每一行之后我无法将分数重置为零

转载 作者:行者123 更新时间:2023-11-28 22:10:22 25 4
gpt4 key购买 nike

我正在尝试根据地址的完整程度对客户数据进行评分。条件如下:

如果地址 1 和地址 2 都存在:得分为 10

如果存在其他地址详细信息:每一个 5 分。

问题是分数输出错误。两个客户都是 15,但第一个应该是 25,第二个应该是 15。

这是一个模拟数据框:

import numpy as np
import pandas as pd

df = pd.DataFrame({'address1':['foo','bar'],'address2':['foo','bar'],'city':['foo',np.nan],'country':['hello','bar'],'county':['foo','bar'],'should_be':['25','20']})

df


address1 address2 city country county should_be
0 foo foo foo hello foo 25
1 bar bar NaN bar bar 20



然后我应用该函数,该函数计算存在/缺失的地址信息,并在额外的列中添加分数:


def f(row):

score = 0

# if we have address1 and address2
if (row['address1'] ==True) & (row['address2']==True) ==2:
score += 10
# if we have city data
if row['city']:
score += 5
# if we have country data
if row['country']:
score += 5
# if we have county data
if row['county']:
score += 5

return score

score = 0

df['actual'] = df.apply(f, axis=1)

df

address1 address2 city country county should_be actual
0 foo foo foo hello foo 25 15
1 bar bar NaN bar bar 20 15

首先,我这样做的方式非常困惑。是否有更有效的评分/检查数据的方法?

其次,如您所见,两位客户的得分均为 15 分,而由于所有地址详细信息均已存在,第一位客户的得分应为 25 分,而第二位客户的得分应为 20 分。

我预计在下面的部分之后分数会重置为零。它也没有正确地添加分数。我哪里错了?

return score

score = 0

如果有人能发现我哪里出错了,我将不胜感激。此外,如果您有任何建议来清理或使此代码更具可读性,我会洗耳恭听。谢谢。

最佳答案

这个怎么样:

In [31]:df_boolean = df.notna()
df_boolean['add1&add2'] = (df_boolean.loc[:,['address1','address2']].all(1))*2
df_boolean.drop(['address1','address2'], axis=1, inplace=True)
df_boolean = df_boolean * 5
df_boolean['score'] = df_boolean.sum(axis=1)



In [32]: df_boolean
Out[32]:
city country county add1&add2 score
0 5 5 5 10 25.0
1 0 5 5 10 20.0

关于python - 使用 apply() 将 'value score' 添加到 pandas 中的客户数据。在每一行之后我无法将分数重置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com