I'm trying to write a program to calculate a bunch of statistics based on a data set. I have the names of the statistic, function to calculate the statistic, and place for results in a dataframe. All that is left is how to evaluate the function and put the results in the result column.
I've seen function pointers in python used like
def func():
#do a thing
return f
func()
and I've seen applying things across a dataframe like
df['col1'] = 5 + df['col2']
but combining the concepts like below doesn't seem to work saying a series object is not callable. I'm hoping there is a way to do this cleanly without iterating over the rows.
def a():
#do a thing...
return 'a'
def b():
#do a thing
return 'b'
def c():
#do a thing
return 'c'
df = pd.DataFrame([[a,''],[b,''],[c,'']], columns=['func','result'])
func result
0 <function a at 0x000000001775D3C8>
1 <function b at 0x000000001775D438>
2 <function c at 0x000000001775D4A8>
df['result'] = df['func']()
func result
0 <function a at 0x000000001775D3C8> 'a'
1 <function b at 0x000000001775D438> 'b'
2 <function c at 0x000000001775D4A8> 'c'