Pandas获取加载到内存中的所有数据框的列表

Kar*_*tik 8 python pandas

我正在使用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)

  • 但这似乎创建了一个列表,其中“df1”和“df2”显示为字符串。当您尝试对它们执行某些操作时,我收到错误:“TypeError:只能合并 Series 或 DataFrame 对象,传递了 <class 'str'>” (2认同)

Ale*_*lex 9

我个人认为这种方法要好得多(如果在ipython中)。

import pandas as pd
%whos DataFrame
Run Code Online (Sandbox Code Playgroud)


Jor*_*ins 6

以以前的答案为基础……这将返回一个列表

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 将有一个仅供内部使用的副本,并且那些以“_”开头