Adjuntar una columna calculada a un marco de datos existente

Estoy empezando a aprender Pandas, y estaba siguiendo la preguntaaquí y no pude obtener la solución propuesta para trabajar para mí y obtengo un error de indexación. Esto es lo que tengo

from pandas import *
import pandas as pd
d = {'L1' : Series(['X','X','Z','X','Z','Y','Z','Y','Y',]),
     'L2' : Series([1,2,1,3,2,1,3,2,3]),
     'L3' : Series([50,100,15,200,10,1,20,10,100])}
df = DataFrame(d)  
df.groupby('L1', as_index=False).apply(lambda x : pd.expanding_sum(x.sort('L3', ascending=False)['L3'])/x['L3'].sum())

que da salida a lo siguiente (estoy usando iPython)

L1   
X   3    0.571429
    1    0.857143
    0    1.000000
Y   8    0.900901
    7    0.990991
    5    1.000000
Z   6    0.444444
    2    0.777778
    4    1.000000
dtype: float64

Luego, trato de adjuntar el cálculo del número acumulativo bajo la etiqueta "nuevo" como se sugiere en la publicación

df["new"] = df.groupby("L1", as_index=False).apply(lambda x : pd.expanding_sum(x.sort("L3", ascending=False)["L3"])/x["L3"].sum())

Entiendo esto:

   2196                         value = value.reindex(self.index).values
   2197                     except:
-> 2198                         raise TypeError('incompatible index of inserted column '
   2199                                         'with frame index')
   2200 
TypeError: incompatible index of inserted column with frame index

¿Alguien sabe cuál es el problema? ¿Cómo puedo reinsertar el valor calculado en el marco de datos para que muestre los valores en orden (descendiendo por "nuevo" para cada etiqueta X, Y, Z.)

Respuestas a la pregunta(1)

Su respuesta a la pregunta