Jednym ze sposobów osiągnięcia tego jest
>>> 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
Generalnie najłatwiej jest dołączać ramki danych, a nie serie. W twoim przypadku, ponieważ chcesz, aby nowy wiersz był „na wierzchu” (z początkowym identyfikatorem) i nie ma funkcji pd.prepend()
, najpierw tworzę nową ramkę danych, a następnie dołączam starą.
ignore_index
zignoruje stary, trwający indeks w ramce danych i zapewni, że pierwszy wiersz faktycznie zaczyna się od indeksu 1
zamiast ponownego uruchamiania z indeksem 0
.
Typowe zastrzeżenie: Cetero censeo ... dołączanie wierszy jest dość nieefektywną operacją. Jeśli zależy Ci na wydajności, a może w jakiś sposób zapewnić, aby najpierw utworzyć dataframe z prawidłowym wskaźnikiem (dłuższy) a potem po prostu wstawiając dodatkowy wiersz do dataframe, powinno się to zrobić. Widzieć:
>>> 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)]
Jak dotąd mamy to, co miałeś jako df
:
>>> df2
Out[339]:
A B C
0 NaN NaN NaN
1 5 6 7
2 7 8 9
Ale teraz możesz łatwo wstawić wiersz w następujący sposób. Jest to bardziej wydajne, ponieważ miejsce zostało wstępnie przydzielone.
>>> 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
w przeciwieństwie dolist(s1)
tworzenia zupełnie nowej listy przy użyciulist(s1)
.