kaseyamelia
kaseyamelia

Reputation: 3

Loop to Store multiple pandas dataframe into a List

I'm a beginner python user and I am wondering if it is possible to store multiple dataframes that is generated from a loop, into a list.

Unfortunately, I do not have a reproducible example. What I am trying to do is to read in a directory of pdf files, make row 0 into the header, drop that row and store it into one dataframe within a list.

master_df= []
for i in range(1, len(pdffiles)):
    df = read_pdf(pdffiles[i])
    df.columns = df.iloc[0,] #get col names
    df = df.reindex(df.index.drop(0)) #drop first row
    df = df.replace(np.nan, '', regex=True, inplace = True)
    master_df = df

This is the code that I have but I am getting this error at df.columns, reindex and replace.

AttributeError: 'NoneType' object has no attribute 'replace'

Could anyone point me in the right direction?

Update:

May I ask why the following code does not work? I'm trying to parse in a continue when the dataframe is not a None set.

master_df = []
for i in range(len(pdffiles)):
    df = read_pdf(pdffiles[i])
    if df is not None:
        continue
    df.columns = df.iloc[0,:] # get col names
    df = df.reindex(df.index.drop(0)) # drop first row
    df = df.fillna('')
    master_df.append(df)

Upvotes: 0

Views: 791

Answers (1)

Nathaniel
Nathaniel

Reputation: 3290

It is possible to store data frames in a list:

master_df = []
for i in range(len(pdffiles)):
    df = read_pdf(pdffiles[i])
    df.columns = df.iloc[0,:] # get col names
    df = df.reindex(df.index.drop(0)) # drop first row
    df = df.fillna('')
    master_df.append(df)

You can use df.fillna() to replace NaN values with ''.

Upvotes: 1

Related Questions