Python - agrupado de registros

 
Vista:

agrupado de registros

Publicado por Luis Villagran (2 intervenciones) el 05/02/2015 21:11:53
Tengo la siguiente salida:

20150131 20 71030 internet.movistar.ni 763 319
20150131 20 71030 internet.movistar.ni 651 259
20150131 20 71030 internet.movistar.ni 4402 7522
20150131 20 71030 internet.movistar.ni 1292 499
20150131 20 71030 internet.movistar.ni 1588 5250
20150131 20 71030 internet.movistar.ni 3263 2491
20150131 20 71030 internet.movistar.ni 703 359
20150131 20 71030 wap.movistar.ni 480 0
20150131 20 71030 wap.movistar.ni 480 0
20150131 20 71030 internet.movistar.ni 734 1956
20150131 20 71030 internet.movistar.ni 703 347

necesito que me devuelva los valores agrupados por las primeras 4 columnas y me agregue un conteo del total de registros y el acumulado de la quinta y sexta columna

Ejemplo:

20150131 20 71030 internet.movistar.ni 9 14099 19002
20150131 20 71030 wap.movistar.ni 2 960 0

Por favor alguien me ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

agrupado de registros

Publicado por xve (1646 intervenciones) el 06/02/2015 16:03:26
Hola Luis, aquí tienes un código que hace exactamente lo que quieres partiendo de que el listado es una lista:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
lista=[
    "20150131 20 71030 internet.movistar.ni 763 319",
    "20150131 20 71030 internet.movistar.ni 651 259",
    "20150131 20 71030 internet.movistar.ni 4402 7522",
    "20150131 20 71030 internet.movistar.ni 1292 499",
    "20150131 20 71030 internet.movistar.ni 1588 5250",
    "20150131 20 71030 internet.movistar.ni 3263 2491",
    "20150131 20 71030 internet.movistar.ni 703 359",
    "20150131 20 71030 wap.movistar.ni 480 0",
    "20150131 20 71030 wap.movistar.ni 480 0",
    "20150131 20 71030 internet.movistar.ni 734 1956",
    "20150131 20 71030 internet.movistar.ni 703 347"
]
 
resultado={}
 
for i in lista:
    valores=i.split()
 
    cadena=" ".join(valores[0:4])
 
    if resultado.has_key(cadena):
        resultado[cadena][0]=resultado[cadena][0]+int(valores[4])
        resultado[cadena][1]=resultado[cadena][0]+int(valores[5])
    else:
        resultado[cadena]=[int(valores[4]),int(valores[5])]
 
for i in resultado:
    print i,resultado[i][0],resultado[i][1]

Espero que te sirva... si hay algo que no entiendes...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar