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