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

Python数据切片:如何筛选arrest_made为True条件对应的officer_id_hash 原代码失效

原代码问题排查

原代码无法得到预期结果的核心原因有三个:

  • 运算符优先级逻辑完全偏差:Python中&是位运算符,优先级高于相等判断==,原代码df['officer_id_hash'&'arrest_made' == 'True']实际会先对两个字符串'officer_id_hash'、'arrest_made'执行位与运算,从根上不符合pandas布尔索引的语法规则
  • 索引结构混淆:pandas做条件切片时,行筛选条件、目标列选取是两个独立的索引位置,不能通过位操作把两个列名拼接成单个索引表达式
  • 无关方法误用:.max()是聚合类方法,作用是计算序列的最大值,和“提取所有满足条件的officer_id_hash值”的需求完全不匹配
正确实现方案

按照需求拆解为两步:①筛选所有arrest_made值为'True'的记录行;②从筛选结果中提取对应行的officer_id_hash字段值,通用的实现代码为:

# 提取所有符合条件的officer_id_hash序列
target_officer_ids = df.loc[df['arrest_made'] == 'True', 'officer_id_hash']

# 如果需要拿到纯Python格式的列表,可追加转换方法
target_officer_id_list = target_officer_ids.tolist()

实现逻辑说明:

  • 使用.loc索引器是pandas条件切片的标准写法,第一个参数传入行筛选的布尔条件,第二个参数传入需要提取的列名,避免索引歧义
  • 额外注意事项:如果arrest_made列实际存储的是布尔类型的真/假值,而非字符串格式的'True'/'False',需要把筛选条件调整为df['arrest_made'] == True,去掉True两侧的引号,否则会出现筛选结果为空的问题
  • 多条件筛选的场景下才需要使用&运算符,且每个独立筛选条件需要用括号包裹,例如同时筛选逮捕记录、警区为A区的写法为:df[(df['arrest_made'] == True) & (df['patrol_district'] == 'A区'), 'officer_id_hash']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 05:24:04