Uma maneira de conseguir isso é
>>> 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
Geralmente, é mais fácil anexar dataframes, não séries. No seu caso, como você deseja que a nova linha esteja "no topo" (com id inicial) e não haja nenhuma função pd.prepend()
, primeiro crio o novo dataframe e, em seguida, acrescento o antigo.
ignore_index
irá ignorar o índice antigo em andamento em seu dataframe e garantir que a primeira linha realmente comece com índice em 1
vez de reiniciar com índice 0
.
Isenção de responsabilidade típica: Cetero censeo ... anexar linhas é uma operação bastante ineficiente. Se você se preocupa com o desempenho e pode, de alguma forma, garantir primeiro a criação de um dataframe com o índice correto (mais longo) e, em seguida, apenas inserir a linha adicional no dataframe, você definitivamente deve fazer isso. Vejo:
>>> 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)]
Até agora, temos o que você tinha como df
:
>>> df2
Out[339]:
A B C
0 NaN NaN NaN
1 5 6 7
2 7 8 9
Mas agora você pode inserir facilmente a linha da seguinte maneira. Como o espaço foi pré-alocado, isso é mais eficiente.
>>> 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
em vez delist(s1)
criar uma lista totalmente nova usandolist(s1)
.