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

问题:无法访问DataFrame列表字段中首个元素以外的内容

解决DataFrame中包含字典的列表字段无法访问非首个元素的问题

看起来你遇到的问题大概率是两种情况之一:要么你的stations字段里的"列表"其实是字符串格式的JSON(没被正确解析成Python列表),要么是你用了不正确的索引方式。下面一步步帮你排查解决:

第一步:先确认数据类型

首先检查stations字段第6行(索引5)的元素到底是什么类型:

print(type(data.stations.iloc[5]))

如果输出是str(字符串)

这是最常见的情况——数据读取时,原本的列表被存成了字符串(比如CSV里直接写了[{'id': ...}, ...]这种格式)。你需要把它解析成真正的Python列表:

import json

# 处理字符串转列表:注意单引号要替换成双引号,因为json只认双引号
data['stations'] = data['stations'].apply(
    lambda x: json.loads(x.replace("'", '"')) if isinstance(x, str) else x
)

# 现在试试访问第二个元素
print(data.stations.iloc[5][1])

如果输出是list(列表)

那问题可能出在索引方式上:

  • 如果你用data.stations[5],如果你的Series索引不是默认的连续整数,[5]会匹配标签为5的行,而不是第6行的位置。更稳妥的方式是用iloc按位置索引:
# 按位置取第6行的stations列表,再取列表中的第二个元素(索引1)
target_element = data.stations.iloc[5][1]
print(target_element)

另外,你看到输出末尾的{'...是pandas的默认截断显示,不代表列表只有一个元素。可以取消截断查看完整内容:

import pandas as pd
pd.set_option('display.max_colwidth', None)
print(data.stations.iloc[5])  # 现在能看到完整的列表所有元素

验证示例

假设你的数据处理后,data.stations.iloc[5]是你给出的完整列表,那么data.stations.iloc[5][1]会输出:

{'id': 245856, 'outlets': [{'connector': 13, 'id': 514165, 'power': 0}, {'connector': 3, 'id': 514164, 'power': 0}, {'connector': 7, 'id': 514163, 'power': 0}]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:26:46