下面是一个示例的UDF函数,用于执行countif并对一行进行打分:
import pandas as pd
def countif_score(row, condition):
count = sum(1 for value in row if value == condition)
return count * 10
# 创建示例数据
data = {'A': [1, 2, 3, 4, 5],
'B': [2, 2, 3, 4, 5],
'C': [1, 2, 3, 3, 4]}
df = pd.DataFrame(data)
# 对每一行调用UDF函数并添加一个新的列'Score'
df['Score'] = df.apply(lambda row: countif_score(row, 2), axis=1)
print(df)
输出结果为:
A B C Score
0 1 2 1 20
1 2 2 2 20
2 3 3 3 30
3 4 4 3 0
4 5 5 4 0
在这个示例中,我们首先定义了一个名为countif_score
的函数。它接受两个参数:row
是一行数据,condition
是我们要进行计数的条件。函数遍历一行数据,并使用条件进行计数。最后,根据计数结果乘以10来得到该行的得分。
然后,我们创建了一个示例数据框df
,包含三列'A'、'B'和'C'。接下来,我们使用apply
函数对每一行调用countif_score
函数,并将结果存储在新的列'Score'中。最后,我们打印出整个数据框以查看结果。
在这个示例中,我们将条件设置为2,所以只有在数据中出现2的行才会得到非零的得分。对于包含2的行,得分为计数的结果乘以10。对于不包含2的行,得分为0。