gpt4 book ai didi

python - 将一列与多列进行比较,并返回 pandas 中条件最先匹配的索引

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:59 25 4
gpt4 key购买 nike

我想将我的数据框的一列(年龄)与某些列(1 到 7)进行比较并设置一个条件,比如 col 1 到 7 的任何值是否为 col 值的 75% 或更少年龄然后我想返回匹配的第一列的索引。

   Weight Name   Age     1     2        3      4        5      6        7    Output
0 45 Sam 100 -75.0 -45.0 -92.0 -79.0 -57.0 -55.0 -35.0 true
1 88 Andrea 25 30.0 -17.0 -4.0 18.0 20.0 40.0 NaN true
2 56 Alex 55 -47.0 -34.0 -12.0 -10.0 10.0 NaN NaN true
3 15 Robin 8 13.0 35.0 37.0 57.0 NaN NaN NaN false
4 71 Kia 21 22.0 24.0 44.0 NaN NaN NaN NaN false
5 44 Sia 43 2.0 22.0 NaN NaN NaN NaN NaN true
6 54 Ryan 45 20.0 NaN NaN NaN NaN NaN NaN true
7 34 Dimi 65 NaN NaN NaN NaN NaN NaN NaN false

我能够生成包含 true 和 false 的列,如果在一行中,任何值都比“年龄”列中的值小 75%,代码如下:

 df['Output'] = ((df[['Age']].values)* 0.75  > df.iloc[:, 3:9].values).any(axis=1) 

但是,我想获取列的名称,它给出的输出为 true。如果输出为假,我想获取该行的最大值,为此我使用 .idxmax(axis=1)。

   Weight Name   Age     1     2        3      4        5      6        7   Expected Output
0 45 Sam 100 -75.0 -45.0 -92.0 -79.0 -57.0 -55.0 -35.0 1
1 88 Andrea 25 30.0 -17.0 -4.0 18.0 20.0 40.0 NaN 2
2 56 Alex 55 -47.0 -34.0 -12.0 -10.0 10.0 NaN NaN 1
3 15 Robin 8 13.0 35.0 37.0 57.0 NaN NaN NaN 4
4 71 Kia 21 22.0 24.0 44.0 NaN NaN NaN NaN 3
5 44 Sia 43 2.0 22.0 NaN NaN NaN NaN NaN 1
6 54 Ryan 45 20.0 NaN NaN NaN NaN NaN NaN 1
7 34 Dimi 65 NaN NaN NaN NaN NaN NaN NaN NaN

最佳答案

使用DataFrame.lt使用 axis=0DataFrameSeries 进行比较,然后通过 DataFrame.any 进行比较与 DataFrame.idxmax并通过 numpy.where 设置新值:

df1 = df.iloc[:, 3:9]
mask = df1.lt(df['Age']* 0.75, axis=0)
df['Output'] = np.where(mask.any(axis=1), mask.idxmax(axis=1), df1.idxmax(axis=1))
print (df)
Weight Name Age 1 2 3 4 5 6 7 Output
0 45 Sam 100 -75.0 -45.0 -92.0 -79.0 -57.0 -55.0 -35.0 1
1 88 Andrea 25 30.0 -17.0 -4.0 18.0 20.0 40.0 NaN 2
2 56 Alex 55 -47.0 -34.0 -12.0 -10.0 10.0 NaN NaN 1
3 15 Robin 8 13.0 35.0 37.0 57.0 NaN NaN NaN 4
4 71 Kia 21 22.0 24.0 44.0 NaN NaN NaN NaN 3
5 44 Sia 43 2.0 22.0 NaN NaN NaN NaN NaN 1
6 54 Ryan 45 20.0 NaN NaN NaN NaN NaN NaN 1
7 34 Dimi 65 NaN NaN NaN NaN NaN NaN NaN NaN

关于python - 将一列与多列进行比较,并返回 pandas 中条件最先匹配的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58888549/

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