gpt4 book ai didi

python - Pandas:获取每行中最小值的列名称,并获取与其余列相比的%差异

转载 作者:行者123 更新时间:2023-12-02 05:39:58 26 4
gpt4 key购买 nike

我有一个数据框:

LF  RF  LR  RR  
11 22 33 44
23 43 23 12
33 23 12 43

我想要完成的是计算(目的是确定每行中的哪一列具有最低值,并确定与其余列平均值相比的百分比)。例如:确定 r1 ​​中的最小值,即 11 和列名称 (LF)。其余列的平均值为 (22+33+44)/3= 33。然后我们计算百分比差异 11/33 = 0.333

预期输出:

LF  RF  LR  RR  Min_Col dif(%)
11 22 33 44 LF 0.333
23 43 23 12 RR 0.404
33 23 12 43 LR 0.364

编写方程的正确方法是:

(min_value)/(sum_rest_of_cols/3)

注意:我需要有一列来指示每一行哪一列是最低的(这是一个识别问题的程序,因此在错误消息中我们希望能够告诉用户它是哪一列,即正在给出问题)

编辑:

我的代码(df_inter 是我定位的原始 df,仅获取执行此计算所需的列):

df_exc = df_inter.loc[:,['LF_Strut_Pressure', 'RF_Strut_Pressure', 'LR_Strut_Pressure' ,'RR_Strut_Pressure']]
df_exc['dif(%)'] = df_exc.min(1) * 3 / (df_exc.sum(1) - df_inter.min(1))
df_exc['Min_Col'] = df_exc.iloc[:, :-1].idxmin(1)
print(df_exc)

我的输出:

                            LF_Strut            RF_Strut           LR_Strut            RR_Strut    dif(%)      Min_Col
truck_id
EX7057 0.000000 0.000000 0.000000 0.000000 0.0000 LF_Strut
EX7105 0.000000 0.000000 0.000000 0.000000 0.0000 LF_Strut
EX7106 0.000000 0.000000 0.000000 0.000000 0.0000 LF_Strut
EX7107 0.000000 0.000000 0.000000 0.000000 0.0000 LF_Strut
TD6510 36588.000000 36587.000 36587.00000 36587.00 0.8204 RF_Strut
TD6511 36986.000000 36989.000 36987.00000 36989.00 0.8220 LF_Strut
TD6512 27704.000000 27705.000 27702.00000 27705.00 0.7757 LR_Strut

问题是:在计算 TD6510 ( 36587/( (36587 + 36587 + 36588)/3 ) ) = 0.9999999 .. 而不是 0.8204 时。我尝试复制 0.8204 的来源,但没有成功。感谢大家的帮助和支持。

最佳答案

首先我们使用idxmin

df['dif(%)']=df.min(1)*3/(df.sum(1)-df.min(1))
df['Min_Col']=df.iloc[:,:-1].idxmin(1)
df
LF RF LR RR dif(%) Min_Col
0 11 22 33 44 0.333333 LF
1 23 43 23 12 0.404494 RR
2 33 23 12 43 0.363636 LR

关于python - Pandas:获取每行中最小值的列名称,并获取与其余列相比的%差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737795/

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