我想创建3个数据帧,如下所示:
basket = [['Apple', 'Banana', 'Orange']]
for fruit in basket:
fruit = pd.DataFrame(np.random.rand(10,3))
然而,在运行之后,运行类似:
Apple
给出错误
NameError:名称' Apple未定义
但是'水果'作为数据框确实有效。
如何让每个生成的数据框都以变量作为名称?
答案 0 :(得分:3)
使用dict存储dfs而不是创建变量,而不是在循环上创建变量的好习惯,即
basket = ['Apple', 'Banana', 'Orange']
d_o_dfs = {x: pd.DataFrame(np.random.rand(10,3)) for x in basket}
不推荐,但如果您想将其存储在变量中,请使用全局,即
for i in basket:
globals()[i] = pd.DataFrame(np.random.rand(10,3))
输出:
Banana
和d_o_dfs['Banana']
0 1 2 0 0.822190 0.115136 0.807569 1 0.698041 0.936516 0.438414 2 0.184000 0.772022 0.006315 3 0.684076 0.988414 0.991671 4 0.017289 0.560416 0.349688 5 0.379464 0.642631 0.373243 6 0.956938 0.485344 0.276470 7 0.910433 0.062117 0.670629 8 0.507549 0.393622 0.003585 9 0.878740 0.209498 0.498594
答案 1 :(得分:2)
这样可行:
basket = ['Apple', 'Banana', 'Orange']
for fruit in basket:
vars()[fruit] = pd.DataFrame(np.random.rand(10,3))
然而,或许更好的做法是分配给字典,例如:
var_dict={}
basket = ['Apple', 'Banana', 'Orange']
for fruit in basket:
var_dict[fruit] = pd.DataFrame(np.random.rand(10,3))