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

如何提取Pandas DataFrame中列表嵌套字典字段的pluralName值

问题解答

报错原因

你编写的循环逻辑存在错误:
执行category_names = df['venue.categories'].values.tolist()后,category_names是嵌套列表结构,每个元素对应原DataFrame单行的venue.categories值(即你示例中包含字典的列表)。
当你使用for x in category_names遍历列表时,x本身就是每一行的列表元素,而非列表的整数索引,此时再写category_names[x]相当于用列表类型的值作为索引取值,自然触发TypeError: list indices must be integers or slices, not list报错。

解决方法

方法1:修改原有循环逻辑

直接使用遍历得到的x取值即可,无需二次索引category_names:

category_names = df['venue.categories'].values.tolist()
names = []
for x in category_names:
    n = x[0]['pluralName']
    names.append(n)

如果存在部分行venue.categories为空、或者缺少pluralName键的情况,可以增加兼容判断避免报错:

category_names = df['venue.categories'].values.tolist()
names = []
for x in category_names:
    if x:
        n = x[0].get('pluralName', '')
        names.append(n)
    else:
        names.append('')

方法2:更简洁的Pandas向量化写法

无需转换列表遍历,直接用apply方法处理列即可,代码更精简:

# 提取结果为列表
names = df['venue.categories'].apply(lambda x: x[0].get('pluralName', '') if x else '').tolist()

# 也可以直接存为DataFrame新列
df['category_plural_name'] = df['venue.categories'].apply(lambda x: x[0].get('pluralName', '') if x else '')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:15:04