Mam Dataframe df:
20060930 10.103 NaN 10.103 7.981
20061231 15.915 NaN 15.915 12.686
20070331 3.196 NaN 3.196 2.710
20070630 7.907 NaN 7.907 6.459
Następnie chcę wybrać wiersze z określonymi numerami sekwencji, które są wskazane na liście, załóżmy, że tutaj jest [1,3], a następnie po lewej:
20061231 15.915 NaN 15.915 12.686
20070630 7.907 NaN 7.907 6.459
Jak lub jaka funkcja może to zrobić?
możesz również użyć iloc:
To nie zadziała, jeśli indeksy w twojej ramce danych nie odpowiadają kolejności wierszy z powodu wcześniejszych obliczeń. W takim przypadku użyj:
... jak sugerowano w innych odpowiedziach.
źródło
Innym sposobem (chociaż jest to dłuższy kod), ale jest szybszy niż powyższe kody. Sprawdź to za pomocą funkcji% timeit:
PS: Znasz przyczynę
źródło
df.index.get_level_values(0).isin
dla multiindexW przypadku dużych zestawów danych wydajne jest odczytywanie tylko wybranych wierszy za pomocą
skiprows
parametru.Przykład
Spowoduje to teraz zwrócenie DataFrame z pliku, który pomija wszystkie wiersze z wyjątkiem 1 i 3.
Detale
Z dokumentów :
Ta funkcja działa w wersji pandy 0.20.0+. Zobacz także odpowiedni problem i powiązany post .
źródło