¿Cómo leer una columna de csv como dtype list usando pandas?

Tengo un archivo csv con 3 columnas, en el que cada fila de la columna 3 tiene una lista de valores. Como se puede ver en la siguiente estructura de tabla

Col1,Col2,Col3 1,a1,"['Proj1', 'Proj2']" 2,a2,"['Proj3', 'Proj2']" 3,a3,"['Proj4', 'Proj1']" 4,a4,"['Proj3', 'Proj4']" 5,a5,"['Proj5', 'Proj2']" 

Cuando bash leer este csv, Col3 se está leyendo como un objeto str y no como una lista. Intenté alterar el dtype de esa columna en la lista pero obtuve el “Error de atributo” como se muestra a continuación

 df = pd.read_csv("inputfile.csv") df.Col3.dtype = list AttributeError Traceback (most recent call last)  in () ----> 1 df.Col3.dtype = list C:\Python27\lib\site-packages\pandas\core\generic.pyc in __setattr__(self, name, value) 1953 object.__setattr__(self, name, value) 1954 except (AttributeError, TypeError): -> 1955 object.__setattr__(self, name, value) 1956 1957 #---------------------------------------------------------------------- 

AttributeError: no se puede establecer el atributo

Sería realmente genial si me pudieras guiar sobre cómo hacerlo.

Podrías usar el ast lib:

 from ast import literal_eval df.Col3 = df.Col3.apply(literal_eval) print(df.Col3[0][0]) Proj1 

También puede hacerlo cuando cree el dataframe desde el csv, utilizando converters :

 df = pd.read_csv("in.csv",converters={"Col3": literal_eval}) 

Si está seguro de que el formato es el mismo para todas las cadenas, la separación y la división serán mucho más rápidas:

  df = pd.read_csv("in.csv",converters={"Col3": lambda x: x.strip("[]").split(", ")}) 

Pero terminarás con las cadenas envueltas entre comillas.

Añadiendo un reemplazo a la respuesta de Cunninghams:

 df = pd.read_csv("in.csv",converters={"Col3": lambda x: x.strip("[]").replace("'","").split(", ")}) 

Véase también pandas – convertir cadena en lista de cadenas