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

PostgreSQL或pandas按con_no分组满足flag条件填充Parent_pr列

实现方案

1. Pandas 实现

核心逻辑是先提取所有con_no对应的父级pr_no映射,再按行匹配填充,仅flag_1=1的行保留值:

import pandas as pd

# 假设df为读取到的原始数据表
# 生成con_no和对应父pr_no的映射,默认一个con_no下存在多个符合条件记录时取最后一条,需取第一条可加.drop_duplicates('con_no', keep='first')
parent_map = df[(df['flag_1'] == 1) & (df['flag_2'] == 1)].set_index('con_no')['pr_no'].to_dict()

# 填充Parent_pr列
df['Parent_pr'] = df.apply(
    lambda row: parent_map.get(row['con_no']) if row['flag_1'] == 1 else None,
    axis=1
)

2. PostgreSQL 实现

使用窗口函数实时按con_no分组计算,适配con_no动态分配的场景,每次查询都是基于当前最新数据计算:

SELECT 
    con_no,
    pr_no,
    flag_1,
    flag_2,
    -- 仅flag_1=1的行返回Parent_pr,其余返回空
    CASE WHEN flag_1 = 1 THEN
        -- 按con_no分组取组内满足条件的pr_no,多匹配项时可将MAX替换为MIN/FIRST_VALUE调整取值规则
        MAX(CASE WHEN flag_1 = 1 AND flag_2 = 1 THEN pr_no END) OVER (PARTITION BY con_no)
    ELSE NULL END AS Parent_pr
FROM 
    你的表名; -- 替换为实际表名

说明:如果单个con_no下存在多条满足flag_1=1且flag_2=1的记录,可根据业务需求调整取值规则,比如取最早/最新生成的pr_no即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:18:03