ZetDen
ZetDen

Reputation: 167

Misunderstanding of global variable in Python

I would like to calculate the variable "a" by using a function and the global variable "df". My problem is that after running the function, "df" is also altered. I just want to calculate "a" with the function, but I want that "df" stays as it is.

import pandas as pd
f=[]
df = pd.DataFrame(f)
df['A']=[1]

print(df)

def fun():
    a=df
    a['A']=a['A']+1
    return a

fun()
print(df)

actual result:

   A
0  1

   A
0  2

expected result:

   A
0  1

   A
0  1

Upvotes: 0

Views: 49

Answers (1)

devReddit
devReddit

Reputation: 2947

when you are assiging a = df. they are referencing to same thing. So when you're changing some property in a, the df also gets changed. As you do not want to change df inside function, just use copy() and work with the copy. Inside fun(), do:

a = df.copy()

Upvotes: 1

Related Questions