Pandas: grupo por reenvío de relleno con índice de fecha y hora

Tengo un conjunto de datos que tiene dos columnas: empresa y valor.
Tiene un índice de fecha y hora, que contiene duplicados (en el mismo día, diferentes compañías tienen valores diferentes). Los valores tienen datos faltantes, por lo que quiero reenviar los datos faltantes con el punto de datos anterior de la misma compañía.

Sin embargo, parece que no puedo encontrar una buena manera de hacer esto sin encontrar errores grupales extraños, lo que sugiere que estoy haciendo algo mal.

Datos del juguete:

a = pd.DataFrame({'a': [1, 2, None], 'b': [12,None,14]})
a.index = pd.DatetimeIndex(['2010', '2011', '2012'])  
a = a.unstack() 
a = a.reset_index().set_index('level_1') 
a.columns = ['company', 'value'] 
a.sort_index(inplace=True)

Intento de soluciones (no funcionó:ValueError: cannot reindex from a duplicate axis):

a.groupby('company').ffill() 
a.groupby('company')['value'].ffill() 
a.groupby('company').fillna(method='ffill')

Solución hacky (que ofrece el resultado deseado, pero obviamente es solo una solución fea):

a['value'] = a.reset_index().groupby(
    'company').fillna(method='ffill')['value'].values

Probablemente hay una manera simple y elegante de hacer esto, ¿cómo se realiza esto en Pandas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta