Obtener una lista con el contenido de una columna de un archivo csv

publicado por: Anonymous

Estoy buscando acceder a todos los valores del campo ddomain de mi lista y que me cree otra lista nueva con esos valores. Creo que con un for item in your_list se podria hacer pero no encuentro la forma.

with open("Top20_Media_10-12-17.csv", 'rb') as f:
    reader = csv.reader(f)
    your_list = list(reader)
    print your_list
[['Category', 'ddomain', 'opportunities', 'impressions', 'fillRate', 'DATA'], [' ', 'App', '69491941', '13720', '0.02', 'OK'], ['Real Site', 'kimcartoon.me', '157036', '650', '0.41', 'OK'], ['Real Site', 'capitalgazette.com', '2380', '450', '18.91', 'OK'], ['Real Site', 'best.io', '18180', '376', '2.07', 'OK'], ['Real Site', 'statsroyale.com', '121269', '373', '0.31', 'OK'], ['Detected Only', 'dingit.tv', '1019807', '359', '0.04', 'OK'], ['Real Site', 'hgtv.com', '6478', '274', '4.23', 'OK'], ['Real Site', 'mail.yahoo.com', '408744', '240', '0.06', 'OK'], ['Real Site', 'firstrowsportes.net', '211061', '238', '0.11', 'OK'], ['Real Site', 'tpc.googlesyndication.com', '314740', '232', '0.07', 'OK'], ['Real Site', 'bitlanders.com', '21827', '229', '1.05', 'OK'], ['Real Site', 'go.rivosport.co', '326261', '224', '0.07', 'OK'], ['Real Site', 'myasiantv.se', '100480', '220', '0.22', 'OK'], ['Real Site', 'firstrows.xyz', '145247', '218', '0.15', 'OK'], ['Real Site', 'streaming-foot.xyz', '204521', '200', '0.1', 'OK'], ['Real Site', 'start.att.net', '250292', '180', '0.07', 'OK'], ['Real Site', 'myp1p.eu', '30250', '155', '0.51', 'OK'], ['Real Site', 'spotify.com', '15037', '139', '0.92', 'OK'], ['Real Site', 'nflstream.net', '121400', '129', '0.11', 'OK'], ['Real Site', 'metoffice.gov.uk', '69592', '93', '0.13', 'OK']]

solución

Debes iterar con un for como comentas sobre la lista de listas pero debes obtener cada elemento mediante indexación (en este caso la columna ddomain tiene el índice 1, recordando que se indexa desde 0). Usa una lista por compresión:

ddomain = [row[1] for row in your_list]

Si solo te interesa esta columna no crees la lista intermedia, itera directamente sobre las filas:

with open("Top20_Media_10-12-17.csv", 'rb') as f:
    reader = csv.reader(f)
    ddomain = [row[1] for row in reader]

Con pandas también es muy simple usando el método to_list de las series:

import pandas as pd

df = pd.read_csv("Top20_Media_10-12-17.csv")
ddomain = df['ddomain'].tolist()

En todos los casos obtendrás como primer elemento el nombre de la columna (“ddomain”), si no lo quieres, para eliminarlo puedes simplemente hacer:

del(ddomain[0])
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *