1

I was wondering how I can drop the lines from dataframes that contain NaN. I made this code which works but there has to be easier method. Maybe I can implement a loop for this?

X=pd.DataFrame()

X['annual_inc']=annual_inc
X['delinq_2yrs']=delinq_2yrs
X['dti']=dti
X['emp_length']=emp_length
X['loan_amnt']=loan_amnt
X['installment']=installment
X['int_rate']=int_rate
X['total_acc']=total_acc
X['open_acc']=open_acc
X['pub_rec']=pub_rec
X['acc_now_delinq']=acc_now_delinq
X['loan_stat']=loan_stat

X=X[np.isfinite(X['annual_inc'])]
X=X[np.isfinite(X['delinq_2yrs'])]
X=X[np.isfinite(X['dti'])]
X=X[np.isfinite(X['emp_length'])]
X=X[np.isfinite(X['loan_amnt'])]
X=X[np.isfinite(X['installment'])]
X=X[np.isfinite(X['int_rate'])]
X=X[np.isfinite(X['total_acc'])]
X=X[np.isfinite(X['open_acc'])]
X=X[np.isfinite(X['pub_rec'])]
X=X[np.isfinite(X['acc_now_delinq'])]
X=X[np.isfinite(X['loan_stat'])]
Blazej Kowalski
  • 367
  • 1
  • 6
  • 16
  • 2
    Look at the [second answer](https://stackoverflow.com/a/13434501/2285236) in the duplicate. Doing `np.isfinite` for every column is overkill for this. `X.dropna()` should work just fine. You can also pass a subset of columns. – ayhan Jun 04 '17 at 15:23
  • 1
    Nice reference to second answer @ayhan – piRSquared Jun 04 '17 at 16:03

0 Answers0