Python панды: заполнять датафрейм построчно

Простая задача добавления строки вpandas.DataFrame объект, кажется, трудно выполнить. Есть 3 вопроса об стеке потока, относящиеся к этому, ни один из которых не дает рабочего ответа.

Вот что я пытаюсь сделать. У меня есть DataFrame, который я уже знаю форму, а также имена строк и столбцов.

>>> 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

Теперь у меня есть функция для итеративного вычисления значений строк. Как я могу заполнить одну из строк с помощью словаря илиpandas.Series ? Вот различные попытки, которые потерпели неудачу:

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

Видимо, он попытался добавить столбец вместо строки.

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

Очень неинформативное сообщение об ошибке.

>>> 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)

Очевидно, это только для установки отдельных значений в кадре данных.

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

Ну, я не хочу игнорировать индекс, иначе вот результат:

>>> 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

Он выровнял имена столбцов со значениями, но потерял метки строк.

>>> 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

Это также с треском провалилось.

Так как вы это делаете ?

Ответы на вопрос(4)

Ваш ответ на вопрос