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

如何为Python中DataFrame列表的每个元素添加对应名称的新列?

问题解决:为列表中的DataFrame添加对应名称的Loc列

错误原因

你写的df[df]是完全错误的用法——Pandas里df[xxx]如果xxx是DataFrame,会尝试把它当作布尔索引条件来用,但你传入的是普通DataFrame对象,所以才会报“Boolean array expected for the condition, not object”的错误。另外,你当前的df_all列表只存了DataFrame对象,没有保存它们的名称(比如df1、df2),没法直接从对象反向拿到变量名。

解决方案

不要只存DataFrame对象,把名称和对象绑定在一起存储,比如用元组列表或字典,这样循环时能直接获取名称并赋值给新列。

方法1:使用元组列表

先重构你的df_all为包含名称和DataFrame的元组列表:

df_all = [("df1", df1), ("df2", df2), ("df3", df3)]

然后循环添加列:

for name, df in df_all:
    df["Loc"] = name

方法2:使用字典(更直观)

把DataFrame按名称存入字典:

df_dict = {"df1": df1, "df2": df2, "df3": df3}

循环字典的键值对来添加列:

for name, df in df_dict.items():
    df["Loc"] = name

补充说明

不要尝试通过DataFrame对象反向获取变量名(比如用globals()遍历查找),这种方法是hack式的,当多个变量指向同一个DataFrame时会出错,而且代码可读性极差,直接绑定名称和对象才是稳妥的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:55:22