2016-10-31 2 views
0

Я поставил клинические данные, и я должен заменитьЗаменить категориальные значения в CSV-файл с двоичными значениями

  • 1-го значения в столбце «покойный» с 1, если значение «Date»> 365 еще заменить 0 (ноль),
  • значение 'живой' с одним, если 'Day_to_follow_up'> 365

в дополнение мне нужно назначить возраст

  • 0-25 в бункер 0
  • 25-50 в бункер 1,
  • 50-75 в бункер 2
  • выше 75 в бункер 4.

Вот мой код.

import csv 
import pandas as pd 
with open('combined_file', 'rb') as f,open('newFile', 'wb') as out: 
    reader = csv.reader(f) 


    writer = csv.writer(out) 
    for row in reader: 
     #print "AABB" 
     if 'DECEASED' in row[1]: 
      if row[10]>365: 
       row[1]=1 
       writer.writerow(row) 
      elif row[10]<365: 
       row[1]=0 
       writer.writerow(row) 
     if 'LIVING' in row[1]: 
      if row[11]>365: 
       row[1]=1 
       writer.writerow(row) 

ввода образца

sample id , status , age ,gender ,date ,days_to_last_followup 
0  , Deceased , 42 , M , 326 , 149 
1  , Deceased , 56 , F , 500 , 30 
2  , living , 43 ,M , 25 , 150 

выход образец

sample id , status , age ,gender,date ,days_to_last_followup 
0  ,  0 , 1 , M ,326 , 149 
1  ,  1 , 2 , F  ,500 , 30 
2  ,  0 , 1 ,M , 25 , 150 
+0

Вы импортировали панды. Drop 'import csv' и используйте' df = pd.read_csv ("input.csv"); ...; pdf.to_csv ("out.csv") '. – ysdx

ответ

0

Я не уверен, что ваш вопрос, основанный на это сообщение от. В любом случае логическая структура имела бы проблему, если бы оба «умершего» и «живого» были в ряду [1]. Я бы предложил вам создать несколько тестовых примеров для поиска плохих данных, поскольку процессы ETL обычно обрабатывают непредвиденные форматы данных/поля.

Я также не знаю, почему вы импортируете библиотеку pandas. Кажется, вы не называете его нигде в коде, который вы опубликовали.

0

Ваш код является хорошей отправной точкой - несколько вещей, что код не распространяется на:

  • Что происходит, когда «СКОНЧАЛСЯ» и «ЖИВАЯ» оба в row[1]? Ваш код будет писать две строки. Чтобы исправить это, установите if 'LIVING' в elif 'LIVING'.
  • Вам нужен случай else, чтобы поймать, что произойдет, когда ни DECEASED, ни LIVING не находится в row[1].
Смежные вопросы