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

按Street分组判断Crime列是否含Y并新增Flag列的实现方法

需求实现方案

核心逻辑:先按Street字段分组,判断每个分组内是否至少存在1条Crime为"Y"的记录,将判断结果映射为Y/N后回填到该分组的所有行即可。

1. SQL 实现

使用窗口函数直接生成分组聚合结果,无需额外关联:

SELECT 
    ID,
    Street,
    `street type`,
    Crime,
    -- 同一Street分组下只要有一个Y,MAX结果就是Y,否则为N
    MAX(Crime) OVER (PARTITION BY Street) AS Flag
FROM 你的表名
ORDER BY ID;

如果需要忽略Street的大小写差异,可以将分组字段替换为UPPER(Street)或者LOWER(Street)。

2. Python Pandas 实现

两种常用写法,逻辑和SQL一致:

import pandas as pd

# 写法1:直观判断分组内是否存在Y
df['Flag'] = df.groupby('Street')['Crime'].transform(lambda x: 'Y' if 'Y' in x.values else 'N')

# 写法2:利用字符串大小比较简化写法('Y'的字符序大于'N')
df['Flag'] = df.groupby('Street')['Crime'].transform('max')

3. Excel 实现

假设原始数据第一行是表头,数据从第2行开始:Street列为B列、Crime列为D列,新增Flag为E列,在E2单元格输入公式后下拉填充即可:

=IF(COUNTIFS(B:B,B2,D:D,"Y")>0,"Y","N")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:45:05