Python 如何循环工作区中的所有数据帧?

Python 如何循环工作区中的所有数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我希望能够遍历当前工作区中的所有数据帧(而不是名称!) 为了获得所有数据帧的列表,我找到了以下解决方案: 这是如上所述的,但问题是我希望能够使用此列表来迭代实际数据帧,而不是数据帧的名称 以下代码返回数据帧名称的长度,但应返回数据帧的长度(行数): 它应返回: 100 100 它返回: 3 3 如何解决此问题?您需要对列表中的元素使用评估,因为这些是数据帧变量的名称。i、 e: for df in alldfs: print(len(eval(df))) 您需要对列表中的元素使用e

我希望能够遍历当前工作区中的所有数据帧(而不是名称!)

为了获得所有数据帧的列表,我找到了以下解决方案:

这是如上所述的,但问题是我希望能够使用此列表来迭代实际数据帧,而不是数据帧的名称

以下代码返回数据帧名称的长度,但应返回数据帧的长度(行数):

它应返回:

100
100
它返回:

3
3

如何解决此问题?

您需要对列表中的元素使用
评估,因为这些是数据帧变量的名称。i、 e:

for df in alldfs:
    print(len(eval(df)))

您需要对列表中的元素使用
eval
,因为这些是数据帧变量的名称。i、 e:

for df in alldfs:
    print(len(eval(df)))

这将产生您想要的输出,即
dict

import pandas as pd

df1 = pd.DataFrame({'Col1' : list(range(100))})
df2 = pd.DataFrame({'Col1' : list(range(100))})

alldfs = {key: value for key, value in locals().items() if isinstance(value, pd.core.frame.DataFrame)}

#or using your method

alldfs = {var: eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)}

print(alldfs) 

for df in alldfs.values():
    print(len(df))
输出:

{'df1':     Col1
0      0
1      1
2      2
3      3
4      4
..   ...
95    95
96    96
97    97
98    98
99    99

[100 rows x 1 columns], 'df2':     Col1
0      0
1      1
2      2
3      3
4      4
..   ...
95    95
96    96
97    97
98    98
99    99

[100 rows x 1 columns]}
100
100

这将产生您想要的输出,即
dict

import pandas as pd

df1 = pd.DataFrame({'Col1' : list(range(100))})
df2 = pd.DataFrame({'Col1' : list(range(100))})

alldfs = {key: value for key, value in locals().items() if isinstance(value, pd.core.frame.DataFrame)}

#or using your method

alldfs = {var: eval(var) for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)}

print(alldfs) 

for df in alldfs.values():
    print(len(df))
输出:

{'df1':     Col1
0      0
1      1
2      2
3      3
4      4
..   ...
95    95
96    96
97    97
98    98
99    99

[100 rows x 1 columns], 'df2':     Col1
0      0
1      1
2      2
3      3
4      4
..   ...
95    95
96    96
97    97
98    98
99    99

[100 rows x 1 columns]}
100
100

,不鼓励使用它。更好的选择是基于@adnanmuttaleb推荐的
dict
。好的,谢谢。以后会记住这一点!,不鼓励使用它。更好的选择是基于@adnanmuttaleb推荐的
dict
。好的,谢谢。我们将在将来牢记这一点!