gpt4 book ai didi

python - 如何根据 Pandas 其他两列中的查找值分配最小值?

转载 作者:行者123 更新时间:2023-11-28 17:09:19 31 4
gpt4 key购买 nike

目标:寻找以编程方式匹配两列中的组合以找到另一列的最小值

假设我有这个:

import pandas as pd

d = {'Part_1': [91, 201, 201],
'Part_2': [201,111,91],
'Result': [3,3, 3],
'Sub-Score': [0.60, 0.8,0.9],
'Final-Score': [0,0,0]}
df = pd.DataFrame(data=d)
df

我想从可以分配给 Final-Score 列的子分数列中找到最小值。我需要根据匹配的 Part_1 和 Part_2(这两个部分可以位于不同的位置)进行选择:

d_new = {'Part_1': [91, 201, 201],
'Part_2': [201,111,91],
'Result': [3,3, 3],
'Sub-Score': [0.60, 0.8,0.9],
'Final-Score': [0.6,.8,.6]}
df_new = pd.DataFrame(data=d_new)
df_new

在这里我们可以看到第 0 行第 2 行Part_1 列中具有相同的值 strong>Part_2,它们简直乱七八糟。此外,我们可以看到第 0 行 的子分数值为 0.60,第 2 行 的子分数值为 0.9。

我希望分配第 0 行 的子分数值(因为它是第 0 行第 2 行 中最低的)到第 0 行和第 2 行 的最终得分列。 第 1 行第 0 行第 2 行 没有可比性,也没有相同的部分,因此我们保留其子分数最终得分值的值。

如有任何帮助,我们将不胜感激。

(已编辑):

输入:

   Final-Score  Part_1  Part_2  Result  Sub-Score
0 0 91 201 3 0.6
1 0 201 111 3 0.8
2 0 201 91 3 0.9

期望的输出:

   Final-Score  Part_1  Part_2  Result  Sub-Score
0 0.6 91 201 3 0.6
1 0.8 201 111 3 0.8
2 0.6 201 91 3 0.9

最佳答案

对值进行排序,然后根据 ngroup 进行 groupby 并转换 min 即

temp = pd.DataFrame(pd.np.sort(df[['Part_1','Part_2']]))
grps = temp.groupby(temp.columns.tolist()).ngroup()

df['new']=df.groupby(grps)['Sub-Score'].transform('min')

Final-Score Part_1 Part_2 Result Sub-Score new
0 0 91 201 3 0.6 0.6
1 0 201 111 3 0.8 0.8
2 0 201 91 3 0.9 0.6

关于python - 如何根据 Pandas 其他两列中的查找值分配最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789190/

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