gpt4 book ai didi

Python 跨多列返回第一个非零值

转载 作者:行者123 更新时间:2023-11-28 18:09:44 25 4
gpt4 key购买 nike

我有一张表格,其中包含 3 个安全压力选项和一个拒绝压力(常数):

|SafeOpt1|SafeOpt2|SafeOpt3|RefP|
---------------------------------
|0 |0 |37 |23 |
|0 |0 |0 |23 |
|0 |25 |0 |23 |
|0 |0 |0 |23 |

我需要用这个逻辑返回值:选项 1 中的第一个非零值,如果所有选项 1 都为 0,则选项 2 中第一个非零值,如果所有选项 2 均为 0,则选项 3 中第一个非零值,如果所有选项 3 都为 0,然后接受拒绝压力。

所以在上面的场景中它会返回 25。我有下面的代码来计算一列:

SafeP = next((i for i, x in enumerate(Output.SafeOpt1) if x), Output.refusalpressure)

但我需要将它们链接在一起,但一直没有成功。

最佳答案

使用np.ravelnp.nonzero

In [407]: x = df.values.ravel('K')

In [408]: x[np.nonzero(x)][0]
Out[408]: 25

In [409]: x[np.nonzero(x)]
Out[409]: array([25, 37, 23, 23, 23, 23], dtype=int64)

或者

In [412]: x[x != 0][0]
Out[412]: 25

关于Python 跨多列返回第一个非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51424550/

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