2016-04-02 9 views
14

Sam znajdowałem sposób na upuszczenie nan rzędów z pandasowej ramki danych. Biorąc pod uwagę ramkę danych dat z kolumną x, która zawiera wartości nan, czy istnieje bardziej elegancki sposób na spadek każdego wiersza dat, który ma wartość nan w kolumnie x?lepszy sposób na upuszczenie nan rzędów w pandach

dat = dat[np.logical_not(np.isnan(dat.x))] 
dat = dat.reset_index(drop=True) 
+0

znaczy [ 'pd.dropna()' ] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html)? – Zero

+0

, który wygląda na to, że zadziała – kilojoules

Odpowiedz

41

Zastosowanie dropna:

dat.dropna() 

można przekazać param how spadać czy wszystkie etykiety są nan lub którykolwiek z etykietami są nan

dat.dropna(how='any') #to drop if any value in the row has a nan 
dat.dropna(how='all') #to drop if all values in the row are nan 

Mam nadzieję, że odpowiedzi na swoje pytanie!

Edit 1: W przypadku chcesz usunąć wiersze zawierające nan wartości tylko z określonej kolumny (ów), jak sugeruje J. Doe w poniższej jego odpowiedź, można użyć następujących:

dat.dropna(subset=[col_list]) # col_list is a list of column names to consider for nan values. 
18

Aby rozwinąć odpowiedź Hitesha, jeśli chcesz upuścić wiersze, w których "x" w szczególności jest nan, możesz użyć parametru podzestawu. Jego odpowiedź spadnie wiersze, gdzie inne kolumny mają Nans oraz

dat.dropna(subset=['x']) 
6

Tylko w przypadku poleceń w poprzednich odpowiedziach nie działa, Spróbuj tego: dat.dropna(subset=['x'], inplace = True)

Powiązane problemy