Search code examples
python-3.xlocal-variables

Referencing local variable within the same function


I want to merge 2 DataFrames using a function. The function creates DataFrame df1 when called with variable 'x=1', and then another, df2, when called with 'x != 1', based on an if-statement within the function - code snippet below for further clarity.

Upon reaching the "df3 = pd.concat" line, I get the error "UnboundLocalError: local variable 'df1' referenced before assignment".

I would like to understand how to achieve the result of concatenating df1 and df2 into df3.

def Concat(url, x):
    if x == 1:
        df1 = pd.read_json(url)
    else:
        df2 = pd.read_json(url)
        df3 = pd.concat([df1, df2], ignore_index=True)


def main():
    Concat('*url*', 1)
    Concat('*url*', 2)

Solution

  • You should tweak it a bit, to be:

    def Concat(url, x):
        for i in x:
            if i == 1:
                df1 = pd.read_json(url)
            else:
                df2 = pd.read_json(url)
                df3 = pd.concat([df1, df2], ignore_index=True)
    
    
    def main():
        Concat('*url*', [1, 2])