Use the apply
method to run arbitrary Python functions on each group. minimize
is a function in SciPy (not Pandas) and in your case, the solution will look something like this:
df.groupby(by=["A","B"])\
.apply(lambda g: minimize(equation, g.V, options={'xtol':0.001}).x)
Full working example:
>>> import pandas as pd
>>> from scipy.optimize import minimize, rosen
>>> df = pd.DataFrame({'A': list("abab"), 'B': list("cdcd"), 'V': [1, 2, 3, 4]})
>>> df.groupby(by=["A","B"]).apply(lambda g: minimize(rosen, g.V, options={'xtol':0.001}).x)
A B
a c [0.9999955536845236, 0.9999911035369479]
b d [0.9999980290689747, 0.9999959871180912]
dtype: object
CLICK HERE to find out more related problems solutions.