Jak wybierać wiersze według indeksu w ramce danych pandas


Często możesz chcieć wybrać wiersze w ramce danych pand na podstawie ich wartości indeksu.

Jeśli chcesz wybierać wiersze na podstawie indeksowania liczb całkowitych, możesz użyć funkcji .iloc .

Jeśli chcesz wybierać wiersze na podstawie indeksowania etykiet, możesz użyć funkcji .loc .

W tym samouczku przedstawiono przykład praktycznego wykorzystania każdej z tych funkcji.

Przykład 1: Wybierz wiersze na podstawie indeksowania liczb całkowitych

Poniższy kod pokazuje, jak utworzyć pandę DataFrame i użyć .iloc do wybrania wiersza o wartości indeksu całkowitego równej 4 :

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B '])

#view DataFrame
df

	       A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the 5th row of the DataFrame
df. iloc [[4]]

	       A B
12 0.963663 0.383442

Możemy użyć podobnej składni, aby wybrać wiele wierszy:

 #select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [[2, 3, 4]]

	       A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

Lub możemy zaznaczyć wszystkie wiersze w zakresie:

 #select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [2:5]

	       A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

Przykład 2: Wybierz wiersze na podstawie indeksowania etykiet

Poniższy kod pokazuje, jak utworzyć ramkę danych pandy i użyć .loc , aby wybrać wiersz z etykietą indeksu 3 :

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B '])

#view DataFrame
df

	       A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the row with index label '3'
df. loc [[3]]

               A B
3 0.602763 0.544883

Możemy użyć podobnej składni, aby wybrać wiele wierszy z różnymi etykietami indeksu:

 #select the rows with index labels '3', '6', and '9'
df. loc [[3, 6, 9]]

	       A B
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773

Różnica między .iloc i .loc

Powyższe przykłady ilustrują subtelną różnicę pomiędzy .iloc i .loc :

  • .iloc wybiera wiersze na podstawie indeksu całkowitego . Jeśli więc chcesz wybrać piąty wiersz ramki DataFrame, użyjesz df.iloc[[4]], ponieważ pierwszy wiersz ma indeks 0, drugi wiersz ma indeks 1 i tak dalej.
  • .loc wybiera wiersze na podstawie indeksu oznaczonego etykietą . Jeśli więc chcesz wybrać wiersz z etykietą indeksu 5, użyjesz bezpośrednio df.loc[[5]].

Dodatkowe zasoby

Jak uzyskać numery wierszy w ramce danych Pandas
Jak usunąć wiersze z wartościami NaN w Pandach
Jak usunąć kolumnę indeksu w Pandach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *