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

Pandas新手求助:如何获取极值对应的完整行数据

获取Pandas中Close列极值对应的完整行数据

作为Pandas新手,目前只能提取Close列的极值数值,无法获取这些极值对应的完整行数据。现有代码如下:

df = pd.read_csv('test.csv')

df['min'] = df.iloc[argrelextrema(df.Close.values, np.less_equal,
                                  order=10)[0]]['Close']
df['max'] = df.iloc[argrelextrema(df.Close.values, np.greater_equal,
                                  order=10)[0]]['Close']
# create lists for `min` and `max`
min_values_list = df['min'].dropna().tolist()
max_values_list = df['max'].dropna().tolist()

print(min_values_list, max_values_list)

数据样例:

Datetime,Date,Open,High,Low,Close
2021-01-11 00:00:00+00:00,18638.0,1.2189176082611084,1.2199585437774658,1.2186205387115479,1.2192147970199585

解决方案

不需要额外创建min/max列,直接利用argrelextrema返回的索引提取整行数据即可:

import pandas as pd
import numpy as np
from scipy.signal import argrelextrema

df = pd.read_csv('test.csv')

# 获取局部最小值对应的完整行
min_extrema_rows = df.iloc[argrelextrema(df.Close.values, np.less_equal, order=10)[0]]
# 获取局部最大值对应的完整行
max_extrema_rows = df.iloc[argrelextrema(df.Close.values, np.greater_equal, order=10)[0]]

# 打印结果
print("局部最小值行:")
print(min_extrema_rows)
print("\n局部最大值行:")
print(max_extrema_rows)

# 若需转为列表格式(每行转为字典)
min_rows_list = min_extrema_rows.to_dict('records')
max_rows_list = max_extrema_rows.to_dict('records')
print("\n局部最小值行字典列表:")
print(min_rows_list)

说明

  • argrelextrema返回的是极值在原数组中的索引位置,直接用df.iloc[索引]就能提取对应整行,包含所有列数据
  • to_dict('records')将每行转为字典,方便后续处理;如果需要纯列表格式,可改用min_extrema_rows.values.tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:46:07