18

I am using pandas to read several csv files into memory for processing and at some point would like to list all the data frames I have loaded into memory. Is there a simple way to do that? (I am thinking something like %ls but only for the data frames that I have available in memory)

Kartik
  • 551
  • 1
  • 4
  • 11

3 Answers3

28

I personally think this approach is much better (if in ipython).

import pandas as pd
%whos DataFrame
Alex
  • 1,141
  • 1
  • 11
  • 23
18

You could list all dataframes with the following:

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
datawrestler
  • 1,467
  • 15
  • 17
7

building on previous answers ... this returns a list

import pandas as pd 
%who_ls DataFrame 

however, if you try to run a script it doesn't work

thus

import pandas as pd
sheets=[]    
for var in dir():
    if isinstance(locals()[var], pd.core.frame.DataFrame)  and var[0]!='_':
        sheets.append(var)

since some DataFrames will have a copy for internal use only and those start with '_'

Jorge Martins
  • 171
  • 2
  • 4