【问题标题】:I cannot create a pandas data frame with exec() function in python我无法在 python 中使用 exec() 函数创建熊猫数据框
【发布时间】:2021-02-01 11:42:02
【问题描述】:

我在 python 中使用 exec() 函数来动态命名数据帧(for 循环的每次运行都使用不同的名称)。这是我的代码:

exec(inputs[5] + " = pd.DataFrame(index=range(a), columns=['column1', 'column2', 'column3'])")

但是,我收到以下错误:

  File "<string>", line 1, in <module>
  NameError: name 'pd' is not defined

我猜这可能是 exec 函数以某种方式无法获取 pandas 包的问题,​​即使我已经使用它导入了它

import pandas as pd

请帮忙。谢谢。

【问题讨论】:

  • “我在 python 中使用 exec() 函数来动态命名数据帧(for 循环的每次运行都使用不同的名称)。”不要那样做。
  • 动态创建变量只能在全局范围内起作用,在局部范围内不起作用。但是,在这种情况下不应发生此错误,除非您没有向我们展示某些内容。请提供minimal reproducible example。但说真的,你不应该这样做开始

标签: python pandas


【解决方案1】:

当我尝试相同的代码时,它成功了。

  1. 使用 exec 函数。
import pandas as pd
inputs = "df"
exec(inputs + " = pd.DataFrame(index=range(3), columns=['column1', 'column2', 'column3'])")

print(df.shape)

  1. 使用 eval 函数。

df = eval(" pd.DataFrame(index=range(3), columns=['column1', 'column2', 'column3'])")
print(df.shape)

只要确保导入在 exec/eval 函数之前。希望这可以帮助。谢谢。

【讨论】:

  • 你可以做类似inputs[5] = eval("pd.DataFrame(index=range(3), columns=['column1', 'column2', 'column3'])")
猜你喜欢
  • 2022-01-18
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 2014-08-26
  • 2015-09-12
相关资源
最近更新 更多