Один из способов добиться этого -
>>> pd.DataFrame(np.array([[2, 3, 4]]), columns=['A', 'B', 'C']).append(df, ignore_index=True)
Out[330]:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
Как правило, проще всего добавлять фреймы данных, а не серии. В вашем случае, поскольку вы хотите, чтобы новая строка была «наверху» (с начальным идентификатором), а функции нет pd.prepend()
, я сначала создаю новый фрейм данных, а затем добавляю ваш старый.
ignore_index
будет игнорировать старый текущий индекс в вашем фрейме данных и гарантировать, что первая строка действительно начинается с индекса, 1
а не перезапускается с индекса 0
.
Типичный отказ от ответственности: Cetero censeo ... добавление строк - довольно неэффективная операция. Если вы заботитесь о производительности и можете каким-то образом обеспечить сначала создание фрейма данных с правильным (более длинным) индексом, а затем просто вставку дополнительной строки в фрейм данных, вы обязательно должны это сделать. Видеть:
>>> index = np.array([0, 1, 2])
>>> df2 = pd.DataFrame(columns=['A', 'B', 'C'], index=index)
>>> df2.loc[0:1] = [list(s1), list(s2)]
>>> df2
Out[336]:
A B C
0 5 6 7
1 7 8 9
2 NaN NaN NaN
>>> df2 = pd.DataFrame(columns=['A', 'B', 'C'], index=index)
>>> df2.loc[1:] = [list(s1), list(s2)]
Пока что у нас есть то, что у вас было df
:
>>> df2
Out[339]:
A B C
0 NaN NaN NaN
1 5 6 7
2 7 8 9
Но теперь вы можете легко вставить строку следующим образом. Поскольку пространство было выделено заранее, это более эффективно.
>>> df2.loc[0] = np.array([2, 3, 4])
>>> df2
Out[341]:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
s1.values
вместо того, чтобыlist(s1)
создавать совершенно новый список, используяlist(s1)
.