We are sure that at some point in your programming life you have received an error like UnboundLocalError: local variable ‘x’ referenced before assignment. In this post, we will show you how you can skip this error easily along with a useful hack for Pandas DataFrames.
Let’s say that we have a function that when it takes as input a negative number it returns 0. We want to apply it in a data frame but somehow we want to count how many times the function returned 0. Having said that we need a variable, let’s call it “counter”. To use this variable inside our function without any errors, we need to add this line of code: global counter (the name of the variable).
#this is out fucntion counter=0 def test(x): #at this point we are calling the global variable counter global counter if x<0: x=0 counter = counter+1 return(x) else: return(x)
Let’s apply this function to the following DataFrame
data=pd.DataFrame({"A":[-1,1,-2,3,12,-6,2,45,12]}) print(data)
A
0 -1
1 1
2 -2
3 3
4 12
5 -6
6 2
7 45
8 12
data['A'].apply(test)
0 0
1 1
2 0
3 3
4 12
5 0
6 2
7 45
8 12
Now that the function is applied to our data frame, If we call the variable “counter” it holds how many times the function took as input a negative number.
print(counter)
3