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

单列连续行数据筛选:基于D_HIGH_H列的H/L规则处理

问题解决:按规则处理连续H/L序列数据

输入数据

High    D_HIGH  D_HIGH_H
33  46.57   0   0L
0   69.93   42  42H
1   86.44   68  68H
34  56.58   83  83L
35  67.12   125 125L
2   117.91  158 158H
36  94.51   186 186L
3   120.45  245 245H
4   123.28  254 254H
37  83.20   286 286L

处理规则

  • D_HIGH_H列末尾为L或H;
  • 连续两个H:保留High列值最大的行,删除另一行;
  • 连续两个L:保留High列值最小的行,删除另一行;
  • H/L交替序列:不做修改。

期望输出

High    D_HIGH  D_HIGH_H
33  46.57   0   0L
1   86.44   68  68H
34  56.58   83  83L
2   117.91  158 158H
36  94.51   186 186L
4   123.28  254 254H
37  83.20   286 286L

解决方案(Python Pandas实现)

import pandas as pd

# 构造输入数据(若从文件读取可替换为pd.read_csv等方法)
data = {
    'High': [46.57, 69.93, 86.44, 56.58, 67.12, 117.91, 94.51, 120.45, 123.28, 83.20],
    'D_HIGH': [0, 42, 68, 83, 125, 158, 186, 245, 254, 286],
    'D_HIGH_H': ['0L', '42H', '68H', '83L', '125L', '158H', '186L', '245H', '254H', '286L']
}
df = pd.DataFrame(data, index=[33, 0, 1, 34, 35, 2, 36, 3, 4, 37])

# 提取D_HIGH_H的末尾标签(H/L)
df['tag'] = df['D_HIGH_H'].str[-1]

# 生成连续相同标签的分组ID:当当前行标签与上一行不同时,分组ID+1
df['group'] = (df['tag'] != df['tag'].shift()).cumsum()

# 定义分组处理逻辑
def process_group(group_df):
    # 单一行的组直接保留
    if len(group_df) == 1:
        return group_df
    # 获取当前组的标签类型
    current_tag = group_df['tag'].iloc[0]
    # H组保留High最大值的行,L组保留High最小值的行
    if current_tag == 'H':
        return group_df[group_df['High'] == group_df['High'].max()]
    elif current_tag == 'L':
        return group_df[group_df['High'] == group_df['High'].min()]

# 对每个分组应用处理逻辑
result_df = df.groupby('group').apply(process_group).reset_index(drop=True)

# 移除辅助列,保留原数据列
result_df = result_df.drop(['tag', 'group'], axis=1)

# 输出格式化结果
print(result_df.to_string())

代码说明

  1. 提取标签:通过str[-1]获取D_HIGH_H列的末尾H/L标识;
  2. 分组连续序列:利用shift()对比相邻行标签,结合cumsum()生成连续相同标签的分组ID,确保连续的H或L被分到同一组;
  3. 分组处理:针对不同组类型(单一行、连续H、连续L)执行对应的保留规则;
  4. 输出结果:移除辅助列后输出符合要求的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:07