Figured this out.  You need a second variable for the profile2_load_by_user($obj_user) function.  What you currently get back is an array of profiles, e.g

'candidate' => Profile object,
'person' => Profile object,
'student' => Profile object

You need to specify the profile in the call and then you just get a profile object back.  Then you can save the profile as it is an Profile object.

e.g. profile2_load_by_user($obj_user,'candidate');

Hope this helps