Un modo per ottenere questo risultato è
>>> 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
In generale, è più semplice aggiungere dataframe, non serie. Nel tuo caso, dato che vuoi che la nuova riga sia "in alto" (con ID iniziale) e non c'è alcuna funzione pd.prepend()
, creo prima il nuovo dataframe e poi aggiungo quello vecchio.
ignore_index
ignorerà il vecchio indice in corso nel tuo dataframe e assicurerà che la prima riga inizi effettivamente con index 1
invece di riavviare con index 0
.
Disclaimer tipico: Cetero censeo ... l'aggiunta di righe è un'operazione abbastanza inefficiente. Se ti interessano le prestazioni e puoi in qualche modo assicurarti di creare prima un dataframe con l'indice corretto (più lungo) e poi inserire semplicemente la riga aggiuntiva nel dataframe, dovresti assolutamente farlo. Vedere:
>>> 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)]
Finora, abbiamo quello che avevi come df
:
>>> df2
Out[339]:
A B C
0 NaN NaN NaN
1 5 6 7
2 7 8 9
Ma ora puoi inserire facilmente la riga come segue. Poiché lo spazio è stato preallocato, questo è più efficiente.
>>> 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
invece dilist(s1)
creare un elenco completamente nuovo usandolist(s1)
.