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)
Asked
Active
Viewed 1.9k times
3 Answers
28
I personally think this approach is much better (if in ipython).
import pandas as pd
%whos DataFrame
Alex
- 1,141
- 1
- 11
- 23
-
-
this is really nice, but is also a nice way to save the output from whos into a variable some saveable form – Skyler Jan 12 '21 at 20:21
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