在网页中展示DataFrame指定列行数据时遭遇TypeError错误的技术求助
问题排查与解决办法
这个TypeError: list indices must be integers or slices, not str错误的核心原因很直观:你代码里的df已经不是Pandas DataFrame对象了,而是变成了一个普通的Python列表。
当你写df['EXTERNAL_DATA2']时,Python会默认按列表索引规则处理,但列表只接受整数(比如df[0])或者切片(比如df[1:3])作为索引,用字符串'EXTERNAL_DATA2'当索引自然就触发了错误。
可能的触发场景
- 你之前的代码里不小心把
df重新赋值成了列表,比如写过类似df = df['SOME_COLUMN'].tolist()的代码,直接把原始DataFrame覆盖成了列表; - 加载数据的环节出了问题,比如自定义的读取函数返回了列表而不是DataFrame(不过Pandas的默认读取方法比如
pd.read_csv不会出现这种情况)。
解决步骤
- 先确认
df的类型:在出错的那行代码前面加一行调试代码:
如果输出是print(type(df))<class 'list'>,就坐实了我们的判断。 - 回溯代码找变量覆盖点:检查你之前处理
df的代码,找到把它改成列表的语句,把变量名换掉——比如把列表存到data_list里,保留原始的df作为DataFrame使用。 - 如果
df是DataFrame列表(少见情况):如果df是一个包含多个DataFrame的列表,那你需要先指定具体的DataFrame索引,再取列,比如:# 假设取第一个DataFrame的列 context={'data': df[0]['EXTERNAL_DATA2'].tolist()}
内容的提问来源于stack exchange,提问作者francine
相关产品推荐
相关产品推荐

