gpt4 book ai didi

python - 比较不同列中的值

转载 作者:行者123 更新时间:2023-12-01 02:00:21 24 4
gpt4 key购买 nike

我有一个像这样的 df:

Name   Salary   Age   Cars   Avg Salary   Avg Age   Avg Cars
John 50000 35 1 60000 38 1
Tom 65000 45 3 60000 38 1

某些列的值越高越好,而其他列则反之亦然。所以我创建了两个列表

higher_better = ['Salary', 'Cars']
lower_better = ['Age']

我想比较它们并返回它们的分数,所以我定义了一个像这样的新函数:

def compare_higher(a, b):
return 1 if a > b else 0 if a == b else -1
compare_higher(higher_better, lower_better)

def compare_lower(b, a):
return 1 if a > b else 0 if a == b else -1
compare_lower(higher_better, lower_better)

我想为比较结果创建新列,然后我可以将它们的分数加在一起。理想输出如下:

Name   Salary   Age   Cars   Avg Salary   Avg Age   Avg Cars   Comp Salary   Comp Age   Comp Cars   Score
John 50000 35 1 60000 38 1 -1 1 0 0
Tom 65000 45 3 60000 38 1 1 -1 1 1

我有这些碎片,但不知道如何组合它们。如何比较列中的值并将它们返回到新列中?感谢您的帮助。

最佳答案

我认为您可以为此使用多个 apply :首先,您可以申请higher_better:

for col in higher_better:
df['Comp ' + col] = df.apply(lambda row: compare_higher(row[col], row['Avg ' + col]), axis=1)

然后,lower_better:

for col in lower_better:
df['Comp ' + col] = df.apply(lambda row: compare_lower(row[col], row['Avg ' + col]), axis=1)

最后,将两者的列组合起来得分:

comp_col = ['Comp '+ col for col in higher_better+lower_better]
df['score'] = df[comp_col].sum(axis=1)

结果:

   Name  Salary  Age  Cars  Avg Salary  Avg Age  Avg Cars  Comp Salary  \
0 John 50000 35 1 60000 38 1 -1
1 Tom 65000 45 3 60000 38 1 1

Comp Cars Comp Age score
0 0 1 0
1 1 -1 1

关于python - 比较不同列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724962/

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