Applying different equations to a Pandas DataFrame
You don't want to use an awkward lambda to do the addition.  You can use the add method with a parameter axis=0 that specifies which axis to match the lower dimensional argument.

I bundled the two Series you are adding into one so you only have to broadcast across the index once.

Next, I just changed to match my style and improve my readability

Finally, the finding where not zero and filling in with exp, I'm assuming exp is numpy's exp via some import from numpy import exp or something.  Otherwise, replace with np.exp.  This is much more vectorized.  result is a dataframe and mask makes anything that evaluates to True from the passed condition statement into np.nan. I then chain a fillna with a vectorized call to np.exp(result)

result = result.add(
    np.log(socio.ser_emp.add(1)).mul(.36310718).add(
        socio.hhpop.div(socio.acres).mul(-.07379568).fillna(0)
    ), axis=0)

avgtt, dist = matrices['avgtt'], matrices['dist']
result += avgtt.T * -0.05689183 + ((dist &gt; 1) &amp; (dist &lt;= 2.5)) * 1.5

result = result.mask(result != 0).fillna(exp(result))