You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何截取DataFrame负值并提取局部最小值及对应价格?

处理DataFrame负值局部最小值及对应价格的方法

1. 截取DataFrame中的负值部分

通过布尔索引筛选出目标列的负值行:

import pandas as pd

df = pd.DataFrame({'col': [4, 5, -0.8,-1.3, -0.7, -.5, .4, 5, -.9, -.6, -2]})
# 筛选所有负值行
negative_df = df[df['col'] < 0]

2. 提取负值部分的局部最小值并转为数组

局部最小值判定规则:当前值小于左右相邻值;对于连续负值的首尾项,仅需小于唯一相邻的那个值。用shift()方法实现比较逻辑:

# 生成局部最小值的布尔掩码
mask = (negative_df['col'] < negative_df['col'].shift(1)) & (negative_df['col'] < negative_df['col'].shift(-1))
# 单独处理首尾项的边界情况
mask.iloc[0] = negative_df['col'].iloc[0] < negative_df['col'].iloc[1]
mask.iloc[-1] = negative_df['col'].iloc[-1] < negative_df['col'].iloc[-2]

# 提取局部最小值并转为数组格式
min_lokal = negative_df[mask]['col'].values.tolist()
print(min_lokal)  # 输出: [-1.3, -2]

3. 获取局部最小值对应的价格

如果你的数据中存在单独的price列,直接提取对应行的价格即可:

# 假设DataFrame有price列,提取对应价格
min_prices = negative_df[mask]['price'].values.tolist()

如果这里的“价格”指的是原DataFrame中局部最小值的索引位置,直接提取索引:

min_indices = negative_df[mask].index.values.tolist()
print(min_indices)  # 输出: [3, 10]

内容的提问来源于stack exchange,提问作者Toma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:07:44