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

Pandas遍历字典中DataFrame提取列报错:TypeError: string indices must be integers

解决遍历字典提取DataFrame列时的TypeError问题

你遇到的TypeError: string indices must be integers问题其实很好解决,核心是你遍历字典的方式错了。

当你写for df in d的时候,Python默认遍历的是字典的键(key)——也就是像"DataFrame1"这样的字符串,而不是字典里存储的DataFrame对象。这时候你尝试用df['Names']去索引,本质是在对一个字符串做索引操作,而字符串只能用整数来指定位置(比如"abc"[0]取第一个字符),自然会触发类型错误。

正确的写法有两种:

1. 遍历字典的键值对(最直观)

import pandas as pd

df_All_Names = pd.DataFrame()
# 用.items()获取每个键和对应的DataFrame
for df_name, df in d.items():
    df_All_Names[df_name] = df['Names']

这里df_name是字典的键(用来作为新DataFrame的列名),df才是真正的DataFrame对象,这样就能正确提取'Names'列了。

2. 用字典推导式一步构造(更简洁高效)

import pandas as pd

df_All_Names = pd.DataFrame({name: df['Names'] for name, df in d.items()})

这种写法直接通过字典推导式生成构造新DataFrame所需的键值对,代码更紧凑。

额外提醒:

注意你示例里的DataFrame列名是Name,但代码里写的是'Names'(多了个s),如果实际DataFrame的列名是'Name',记得把代码里的'Names'改成'Name',不然会触发KeyError哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:26:09