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

Pandas字典列表列提取导演名称的代码运行逻辑疑问

问题解答

疑问1 为什么函数不需要嵌套循环

你实际是通过df.apply(get_directors, axis=1)调用的该函数,axis=1参数指定按行遍历,每次传入函数的dataframe参数不是完整DataFrame,而是单行的Series对象:

  • 此时dataframe['crew']取到的就是当前行对应的crew字段值,也就是你示例中的字典列表结构[{'job': 'Director', 'name':'ABC'}, {'job':'Producer', 'name':'XYZ'}]
  • 直接遍历这个列表,拿到的elements就是列表中的每一个字典,自然不需要再加一层嵌套循环
  • 你最早报'Float' object is not iterable错误的原因是部分行的crew字段为缺失值,Pandas中空值默认以NaN(浮点类型)存储,直接遍历浮点类型就会触发该报错,函数中try...except捕获了该异常,碰到空值直接返回None,因此不会报错。

另外补充:你最早写的测试代码多了一层无效嵌套循环,for elements in df['crew'][0]拿到的elements已经是字典,额外加for dicts in elements会遍历字典的键(字符串类型),正常情况下会触发字符串无法用['job']索引的报错,你之前运行正常大概率是示例代码写反了循环层级。

疑问2 单独测试函数时报字符串索引错误的原因

该函数的入参要求是包含crew字段的单行Series对象,你单独测试时传入的是单个crew字段值(也就是字典列表本身):

  • 列表类型只支持整数索引,你在列表上执行dataframe['crew']相当于用字符串'crew'去索引列表,自然会触发「要求使用整数索引而非字符串索引」的报错。
  • 如果要单独测试该函数,需要传入单行数据:get_directors(df.iloc[0])而非直接传入df['crew'][0]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:39:03