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

如何通过名称字符串从DataFrame列表选对象及解决ValueError报错

解决方案

先说说你原代码的问题:

  • list(eval('df1'))是把df1这个DataFrame对象转成了列名列表(DataFrame默认迭代的是列),用这个列表去索引你的DataFrame列表,逻辑完全错误,碰巧能拿到第一个元素只是巧合。
  • 就算改成list.index(eval('df2'))去查索引,也会因为不同DataFrame的列/行标签不一致,触发ValueError——因为DataFrame的相等判断要求两个对象的标签完全一致才行。

正确的做法是用字典建立名称字符串和DataFrame对象的映射,简单又可靠:

# 创建字典,键是名称字符串,值是对应的DataFrame
df_dict = {'df1': df1, 'df2': df2, 'df3': df3, 'df4': df4}

# 通过字符串直接获取目标DataFrame
target_df = df_dict['df1']  # 拿到df1对象
target_df = df_dict['df3']  # 拿到df3对象

如果你的DataFrame列表已经存在,也可以结合名称列表快速生成字典:

df_list = [df1, df2, df3, df4]
df_names = ['df1', 'df2', 'df3', 'df4']
df_dict = dict(zip(df_names, df_list))

另外别用eval,既不安全(如果传入的字符串是恶意代码会出问题),也容易因为对象结构问题触发各种错误,用字典是最稳妥的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:20