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
。好的,谢谢。我们将在将来牢记这一点!