我正在使用pandas将几个csv文件读入内存进行处理,并且在某些时候想要列出我已加载到内存中的所有数据帧.有一个简单的方法吗?(我在想像%ls,但仅限于我在内存中可用的数据帧)
dat*_*ler 13
您可以使用以下内容列出所有数据框:
import pandas as pd
# create dummy dataframes
df1 = pd.DataFrame({'Col1' : list(range(100))})
df2 = pd.DataFrame({'Col1' : list(range(100))})
# check whether all variables in scope are pandas dataframe.
# Dir() will return a list of string representations of the variables.
# Simply evaluate and test whether they are pandas dataframes
alldfs = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
print(alldfs) # df1, df2
Run Code Online (Sandbox Code Playgroud)
我个人认为这种方法要好得多(如果在ipython中)。
import pandas as pd
%whos DataFrame
Run Code Online (Sandbox Code Playgroud)
以以前的答案为基础……这将返回一个列表
import pandas as pd
%who_ls DataFrame
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试运行脚本,则它不起作用
因此
import pandas as pd
sheets=[]
for var in dir():
if isinstance(locals()[var], pd.core.frame.DataFrame) and var[0]!='_':
sheets.append(var)
Run Code Online (Sandbox Code Playgroud)
因为一些 DataFrames 将有一个仅供内部使用的副本,并且那些以“_”开头