usar tutorial tablas que para panda libreria leer hacer funciones español documentacion datos como comandos python csv sorting parsing

python - tutorial - ordenar csv por columna



pandas python tutorial español pdf (3)

El lector actúa como un generador. En un archivo con algunos datos falsos:

>>> import sys, csv >>> data = csv.reader(open(''data.csv''),delimiter='';'') >>> data <_csv.reader object at 0x1004a11a0> >>> data.next() [''a'', '' b'', '' c''] >>> data.next() [''x'', '' y'', '' z''] >>> data.next() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration

Usando operator.itemgetter como sugiere:

>>> data = csv.reader(open(''data.csv''),delimiter='';'') >>> import operator >>> sortedlist = sorted(data, key=operator.itemgetter(2), reverse=True) >>> sortedlist [[''x'', '' y'', '' z''], [''a'', '' b'', '' c'']]

Quiero ordenar una tabla CSV por fecha. Comenzó siendo una tarea simple:

import sys import csv reader = csv.reader(open("files.csv"), delimiter=";") for id, path, title, date, author, platform, type, port in reader: print date

Utilicé el módulo CSV de Python para leer en un archivo con esa estructura:

id;file;description;date;author;platform;type;port

  • La fecha es ISO-8601, por lo tanto, puedo ordenarlo bastante fácilmente sin analizar: 2003-04-22, por ej.
  • Quiero ordenar la fecha, las entradas más nuevas primero
  • ¿Cómo hago para que este lector se convierta en una estructura de datos ordenable? Creo que con un poco de esfuerzo podría hacer un datelist: datelist + = date, split y sort. Sin embargo, tengo que volver a identificar la entrada completa en la tabla CSV. No es solo ordenar una lista de cosas.
  • csv no parece tener una función de clasificación incorporada

La solución óptima sería tener un cliente CSV que maneje el archivo como una base de datos. No encontré nada de eso.

Espero que alguien sepa alguna buena magia de clasificación aquí;)

Gracias,

Marius


Para ordenar por MULTIPLE COLUMN (Ordenar por column_1 , y luego ordenar por column_2 )

with open(''unsorted.csv'',newline='''') as csvfile: spamreader = csv.DictReader(csvfile, delimiter=";") sortedlist = sorted(spamreader, key=lambda row:(row[''column_1''],row[''column_2'']), reverse=False) with open(''sorted.csv'', ''w'') as f: fieldnames = [''column_1'', ''column_2'', column_3] writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() for row in sortedlist: writer.writerow(row)


import operator sortedlist = sorted(reader, key=operator.itemgetter(3), reverse=True)

o usa lambda

sortedlist = sorted(reader, key=lambda row: row[3], reverse=True)