gpt4 book ai didi

python - Pandas:选择第一个不再为负数的值,返回该行

转载 作者:行者123 更新时间:2023-12-01 01:14:39 25 4
gpt4 key购买 nike

现在我的代码如下所示:

    df = pd.DataFrame()
max_exp = []
gammastar = []
for idx,rw in df_gamma_count.iterrows():
exp = rw['Pr_B']*(rw['gamma_index']*float(test_spread)*(1+f)-(f+f))
df = df.append({'exp': exp, 'gamma_perc': rw['gamma_index'], 'Pr_B':rw['Pr_B'], 'spread-test in %': test_spread }, ignore_index=True)
df = df.sort_values(by= ['exp'], ascending=True)
df

这给了我以下数据框:

          Pr_B          exp         gamma_perc  spread-test in %
10077 0.000066 -2.078477e-08 1.544700 0.001090292473058004120128368625
10078 0.000066 -2.073422e-08 1.545400 0.001090292473058004120128368625
10079 0.000066 -2.071978e-08 1.545600 0.001090292473058004120128368625
10080 0.000066 -2.071256e-08 1.545700 0.001090292473058004120128368625
10081 0.000000 -0.000000e+00 1.545900 0.001090292473058004120128368625
10082 0.000000 -0.000000e+00 1.546200 0.001090292473058004120128368625
10083 0.000000 0.000000e+00 1.546300 0.001090292473058004120128368625
10084 0.000000 1 1.546600 0.001090292473058004120128368625

我现在需要的是从 exp 列中选择第一个值,该值不再是负数。我现在所做的是根据 exp 列对数据帧进行排序,但之后我有点卡住了,不知道该去哪里......有什么想法吗?

最佳答案

尝试:

df.loc[df.exp.gt(0).idxmax()]

这将 - 从 exp 列中选择第一个不再为负的值

如果您想获得一系列中的最大值

df.exp.nlargest(1)

编辑:

使用它来获得您想要的输出:

df.loc[df.exp==np.where(all(i > 0 for i in df.exp.tolist()),min([n for n in df.exp.tolist() if n<=0]),max([n for n in df.exp.tolist() if n<=0]))]


print(df.loc[df.exp==np.where(all(i > 0 for i in df.exp.tolist()),min([n for n in df.exp.tolist() if n<=0]),max([n for n in df.exp.tolist() if n<=0]))].head(1))

Pr_B exp gamma_perc spread-test in %
4 0.0 0.0 1.5459 0.00109

关于python - Pandas:选择第一个不再为负数的值,返回该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54466763/

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