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

如何从Pandas DataFrame内的字典结构中提取目标数据

Pandas 检索DataFrame数据实现方案

不需要手动编写for循环逐行匹配,Pandas原生的布尔索引可以直接完成任意维度的行筛选,写法更简洁、运行效率更高,完全覆盖你需要的查询场景。

1. 按标题精确查询单部动漫信息

直接对title列做等值判断,筛选出符合条件的整行数据,即可拿到作品全部字段,也可以单独提取指定字段内容:

import requests
import pandas as pd

url = 'https://api.jikan.moe/v4/top/anime'
response = requests.get(url)
data = response.json()
df = pd.DataFrame(data['data'])

name = input('请输入要查询的动漫名称: ').strip()
# 筛选标题完全匹配的行
match_result = df[df['title'] == name]

if not match_result.empty:
    # 输出作品全部信息
    print("查询到的作品完整信息:\n", match_result)
    # 提取指定字段,比如体裁、评分、上线年份
    print("\n作品体裁:", match_result['genres'].values[0])
    print("作品评分:", match_result['score'].values[0])
    print("上线年份:", match_result['year'].values[0])
else:
    print("未找到对应名称的动漫作品")

小提示:如果担心输入的前后空格、大小写差异导致匹配失败,可以把判断逻辑统一做格式归一:df['title'].str.strip().str.lower() == name.strip().lower(),能大幅降低匹配失败概率。

2. 按体裁等其他维度检索内容

Jikan接口返回的genre字段是嵌套字典的列表结构,先做一层格式转换提取体裁名称,就可以按体裁做筛选:

# 预处理体裁列,把嵌套字典转换为纯体裁名称的列表
df['genre_list'] = df['genres'].apply(lambda x: [item['name'] for item in x])
# 筛选所有包含动作(Action)标签的动漫
action_anime = df[df['genre_list'].apply(lambda x: 'Action' in x)]
# 只输出需要的列
print(action_anime[['title', 'score', 'year']])

常用检索写法参考

  • 标题模糊匹配:记不清完整标题时可做关键词检索,写法为df[df['title'].str.contains('记忆中的关键词', na=False)]
  • 多条件组合检索:比如查询2020年后上线、评分高于8.5的作品,多个条件用逻辑运算符连接即可:df[(df['year'] >= 2020) & (df['score'] >= 8.5)]
  • 你之前尝试的for循环写法需要手动记录匹配项对应的行索引才能取到整行数据,运行效率低且容易出错,处理DataFrame检索时不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:01:09