Skip to content
Advertisement

pd.dataframe saving only one line

Hi i’m wondering what should i do to save all those values in a dataframe…

for mask in range (len(predicted_masks)):
  folha = np.where(predicted_masks [mask,:,:] == 1 , 1, 0)
  soma_folha = np.sum(folha)
  sintoma = np.where(predicted_masks [mask,:,:] == 2 , 1, 0)
  soma_sintoma = np.sum(sintoma)
  fundo = np.where(predicted_masks [mask,:,:] == 0 , 1, 0)
  soma_fundo = np.sum(fundo)
  #print(soma_fundo, soma_folha, soma_sintoma)
  severidade = (soma_sintoma/(soma_folha+soma_sintoma))*100
  severidade = round(severidade,2)
  print(soma_fundo, soma_folha, soma_sintoma, severidade)

  d = {'mask': mask, 'soma_folha':soma_folha, 'soma_sintoma':soma_sintoma, 'soma_fundo':soma_fundo, 'severidade': severidade}
  df = pd.DataFrame([d])
  df.to_csv('/content/drive/MyDrive/DB_mosca_minadora/pred_csv/pred_test_db_anotated.csv', index=False)

already tried to save each one separately but it wont came up..

i needed to save all printed values in a dataframe, thats for 304 images (304 lines) buts it only saves the last line

enter image description here

can someone help me?

Advertisement

Answer

You are overwriting and saving your dataframe within the loop. You should instead do something like the following:

df = pd.DataFrame(columns=['mask', 'soma_folha', 'soma_sintoma', 'soma_fundo', 'severidade'])

for mask in range (len(predicted_masks)):
  folha = np.where(predicted_masks [mask,:,:] == 1 , 1, 0)
  soma_folha = np.sum(folha)
  sintoma = np.where(predicted_masks [mask,:,:] == 2 , 1, 0)
  soma_sintoma = np.sum(sintoma)
  fundo = np.where(predicted_masks [mask,:,:] == 0 , 1, 0)
  soma_fundo = np.sum(fundo)
  #print(soma_fundo, soma_folha, soma_sintoma)
  severidade = (soma_sintoma/(soma_folha+soma_sintoma))*100
  severidade = round(severidade,2)
  print(soma_fundo, soma_folha, soma_sintoma, severidade)

  d = {'mask': mask, 'soma_folha':soma_folha, 'soma_sintoma':soma_sintoma, 'soma_fundo':soma_fundo, 'severidade': severidade}
  new_df = pd.DataFrame([d])
  df = pd.concat([df, new_df])
df.to_csv('/content/drive/MyDrive/DB_mosca_minadora/pred_csv/pred_test_db_anotated.csv', index=False)
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement