Python pandas: rellena una fila de fotogramas por fila

La simple tarea de agregar una fila a unpandas.DataFrame El objeto parece ser difícil de lograr. Hay 3 preguntas de stackoverflow relacionadas con esto, ninguna de las cuales da una respuesta de trabajo.

Esto es lo que estoy tratando de hacer. Tengo un DataFrame del que ya conozco la forma, así como los nombres de las filas y columnas.

>>> df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'])
>>> df
     a    b    c    d
x  NaN  NaN  NaN  NaN
y  NaN  NaN  NaN  NaN
z  NaN  NaN  NaN  NaN

Ahora, tengo una función para calcular los valores de las filas de forma iterativa. ¿Cómo puedo completar una de las filas con un diccionario o unpandas.Series ? Aquí hay varios intentos que han fallado:

>>> y = {'a':1, 'b':5, 'c':2, 'd':3} 
>>> df['y'] = y
AssertionError: Length of values does not match length of index

Aparentemente trató de agregar una columna en lugar de una fila.

>>> y = {'a':1, 'b':5, 'c':2, 'd':3} 
>>> df.join(y)
AttributeError: 'builtin_function_or_method' object has no attribute 'is_unique'

Mensaje de error muy poco informativo.

>>> y = {'a':1, 'b':5, 'c':2, 'd':3} 
>>> df.set_value(index='y', value=y)
TypeError: set_value() takes exactly 4 arguments (3 given)

Aparentemente eso es solo para establecer valores individuales en el marco de datos.

>>> y = {'a':1, 'b':5, 'c':2, 'd':3} 
>>> df.append(y)
Exception: Can only append a Series if ignore_index=True

Bueno, no quiero ignorar el índice, de lo contrario aquí está el resultado:

>>> df.append(y, ignore_index=True)
     a    b    c    d
0  NaN  NaN  NaN  NaN
1  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN
3    1    5    2    3

Alinearon los nombres de las columnas con los valores, pero perdieron las etiquetas de las filas.

>>> y = {'a':1, 'b':5, 'c':2, 'd':3} 
>>> df.ix['y'] = y
>>> df
                                  a                                 b  \
x                               NaN                               NaN
y  {'a': 1, 'c': 2, 'b': 5, 'd': 3}  {'a': 1, 'c': 2, 'b': 5, 'd': 3}
z                               NaN                               NaN

                                  c                                 d
x                               NaN                               NaN
y  {'a': 1, 'c': 2, 'b': 5, 'd': 3}  {'a': 1, 'c': 2, 'b': 5, 'd': 3}
z                               NaN                               NaN

Eso también falló miserablemente.

Entonces, cómo lo haces ?

Respuestas a la pregunta(4)

Su respuesta a la pregunta