Один із способів цього досягти
>>> 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)
.