Cambiar datos numéricos a texto en archivo CSV

La siguiente consulta es la obtención de datos y la creación de un archivo CSV. El problema que tengo es que la fuente llamada ‘SPLE’ almacena los datos en la base de datos con números de 0, 1, 50.

Sin embargo, en el CSV esos números se recostackn en el CSV y me gustaría de alguna manera, al crear el CSV, esos números representen palabras como,

0 = Verdadero

1 = Falso

50 = Pendiente

¿Podría alguien mostrarme cómo se hace esto, por favor, he estado luchando en esto?

Mi código:

from elasticsearch import Elasticsearch import csv es = Elasticsearch(["9200"]) res = es.search(index="search", body= { "_source": ["DTDT", "TRDT", "SPLE", "RPLE"], "query": { "bool": { "should": [ {"wildcard": {"CN": "TEST*"}} ] } } }, size=10) header_names = { 'DTDT': 'DATE', 'SPLE': 'TAG', ...} with open('mycsvfile.csv', 'w') as f: header_present = False for doc in res['hits']['hits']: my_dict = doc['_source'] if not header_present: w = csv.DictWriter(f, my_dict.keys()) w.writerow(header_names) header_present = True w.writerow(my_dict) 

La salida en el archivo CSV es:

 Date SPLE Venue 20171016 1 Central 20171016 1 Central 20171016 0 Central 20171016 0 Central 20171016 50 Central 20171016 0 Central 20171016 1 Central 

Para tu información:

He intentado usar pandas, pero no puedo instalarlos, así que me pregunto si hay otra forma de evitar esto.

Puede cambiar el valor antes de escribirlo en el csv:

 mapping = {0: "True", 1: "False", 50: "Pending"} # Map `SPLE` sple = my_dict['SPLE'] my_dict['SPLE'] = mapping.get(int(sple), sple) # Map `NME` nme = my_dict['NME'] my_dict['NME'] = mapping.get(int(nme), nme) w.writerow(my_dict) 

Sin ver los contenidos de my_dict, esta es solo una mejor suposición pero intentaré ayudar a establecer mis suposiciones.

Para un my_dict que es como el siguiente:

 my_dict = {"DATE": ..., "SPLE": ..., ...} 

Antes de w.writerow(my_dict) , podría analizar la entrada SPLE en lo que quiera con:

 my_dict["SPLE"] = str(bool(int(my_dict["SPLE"]))) if int(my_dict["SPLE"]) in [0,1] else "Pending" 

El es una forma compacta de:

 # Check to see if current "SPLE" value can be described # as True (1) or False (0) if int(my_dict["SPLE"]) in [0,1]: # Yes it can, so change it to True or False string by type conversion my_dict["SPLE"] = str(bool(int(my_dict["SPLE"]))) else: # Entry is not a 0 or 1 so not described by true or false # assign to "Pending" my_dict["SPLE"] = "Pending"