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

Python Pandas:按字典类型列的字段筛选DataFrame行

解决方法:筛选DataFrame中字典列指定键值的行

你遇到的KeyError是因为直接通过.intent访问Series里的字典键行不通——pandas会把intent当成Series的属性/列名,而不是字典的键。下面给你两种可行的解决办法:

方法1:使用apply直接判断字典值

这是最直接的方式,通过apply遍历topIntent列的每个字典元素,提取intent键并做判断:

# 筛选intent等于指定值的行
filtered_df = my_df[my_df['topIntent'].apply(lambda x: x['intent'] == 'UseCasePaymentArrangement')]

运行后filtered_df就会只保留符合条件的行,也就是你想要的message1那一行。

方法2:先展开字典列为单独字段(更适合后续多字段操作)

如果之后还需要用到score这类字典里的其他字段,推荐先把字典列展开成单独的DataFrame列,再进行筛选:

import pandas as pd

# 将topIntent列的字典展开为单独的intent和score列
expanded_df = my_df.join(pd.json_normalize(my_df['topIntent']))

# 筛选intent符合条件的行,同时保留原有的message和topIntent列
filtered_df = expanded_df[expanded_df['intent'] == 'UseCasePaymentArrangement'][['message', 'topIntent']]

这种方式的优势是后续对intent、score的操作会更直观,不用再反复处理字典。

额外提醒:确认字典类型

如果你的topIntent列其实是字符串形式的字典(比如看起来像字典但实际是str类型),需要先把它转换成真正的字典:

import ast

# 将字符串字典转为Python字典
my_df['topIntent'] = my_df['topIntent'].apply(ast.literal_eval)

转换完成后再使用上面的筛选方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:25:49