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

Pandas筛选DataFrame字典列指定键值行并提取字段值方法

你之前写的str.contains筛选无效,核心原因是space列存储的是原生Python字典类型数据,不是字符串,直接调用字符串匹配方法无法识别字典内的键值对,所以筛选没有结果。

正确实现代码

1. 筛选符合条件的原始行

三个筛选条件完全等价(均对应221号Pm-3m立方空间群),任选其一即可:

# 方式1:按symbol键匹配
filtered_df = df[df['space'].apply(lambda x: x['symbol'] == 'Pm-3m')].copy()

# 方式2:按hall键匹配
# filtered_df = df[df['space'].apply(lambda x: x['hall'] == '-P 4 2 3')].copy()

# 方式3:按number键匹配
# filtered_df = df[df['space'].apply(lambda x: x['number'] == 221)].copy()

执行完上述代码,得到的filtered_df就是保留完整space字典列的筛选结果,和要求的第一步输出格式完全一致。

2. 替换space列为symbol值

提取每行字典中symbol键对应的值,覆盖原space列即可得到最终结果:

filtered_df['space'] = filtered_df['space'].apply(lambda x: x['symbol'])
异常情况处理

如果运行代码时报错提示TypeError: string indices must be integers,说明你的space列存的是字符串格式的字典(不是真正的字典对象),先执行下面的代码把字符串转成字典,再跑上面的筛选、替换逻辑即可:

import ast
df['space'] = df['space'].apply(ast.literal_eval)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:18:53