I have this code written down which returns a bunch of ratios each line works fine when executed alone however I am having trouble with putting the code inside a function which should return the values as a dictionary
example of the output: { " less than high school" :0.2 , "high school" :0.39 ...}
def education ():
total = sum (df["CHILDNM"])
edult12 = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 1, 0)
nlt12=sum( edult12["CHILDNM"])
edu12 = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 2, 0)
n12= sum( edu12["CHILDNM"])
edumt12 = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 3, 0)
nmt12=sum( edumt12["CHILDNM"])
educollege = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 4, 0)
ncollege = sum( educollege["CHILDNM"])
lt12ratio = nlt12/total
edu12ratio = n12 / total
edumt12ratio = nmt12 / total
educollegeratio = ncollege/total
values = print (lt12ratio, edu12ratio,edumt12ratio, educollegeratio )
print (values)
CodePudding user response:
Your code is missing the return statement!
Add something like
return { "less than high school" :0.2 , "high school" :0.39 }
(replace numbers with your actual calculated values)
CodePudding user response:
It seems you do not have any "return" statement. So this means the function will not give back any value.
def education ():
somedict = {'url': 'https://stackoverflow.com/'}
return somedict
save_return_value = education()
The "save_return_value" could then include the return value
CodePudding user response:
Well, you assign to values
the result of calling print
which is None
.
Then you simply print out the content of values
which should print None
.
Finally, you don't have any return
statement and so your education
function will always return None
CodePudding user response:
You need to assign the variables (lt12ratio, edu12ratio,edumt12ratio, educollegeratio)
to values
, not print
.
If you want to print them, then you use print(value)
. Finally, you need to return
the values
variable.
This is how your function should be:
def education():
total = sum (df["CHILDNM"])
edult12 = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 1, 0)
nlt12=sum( edult12["CHILDNM"])
edu12 = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 2, 0)
n12= sum( edu12["CHILDNM"])
edumt12 = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 3, 0)
nmt12=sum( edumt12["CHILDNM"])
educollege = df[['EDUC1','CHILDNM']].where(df['EDUC1'] == 4, 0)
ncollege = sum( educollege["CHILDNM"])
lt12ratio = nlt12/total
edu12ratio = n12 / total
edumt12ratio = nmt12 / total
educollegeratio = ncollege/total
values = (lt12ratio, edu12ratio,edumt12ratio, educollegeratio)
print(values)
return values