¿Cómo traducir objetos de “bytes” en cadenas literales en Pandas Dataframe, Python3.x?

Tengo un dataframe de pandas de Python3.x por el cual ciertas columnas son cadenas que se expresan como bytes (como en Python2.x)

import pandas as pd df = pd.DataFrame(...) df COLUMN1 .... 0 b'abcde' .... 1 b'dog' .... 2 b'cat1' .... 3 b'bird1' .... 4 b'elephant1' .... 

Cuando df.COLUMN1 por columna con df.COLUMN1 , veo Name: COLUMN1, dtype: object

Sin embargo, si accedo por elemento, es un objeto “bytes”

 df.COLUMN1.ix[0].dtype Traceback (most recent call last): File "", line 1, in  AttributeError: 'bytes' object has no attribute 'dtype' 

¿Cómo los convierto en cadenas “regulares”? Es decir, ¿cómo puedo deshacerme de este prefijo b'' ?

Puede usar str.decode str.decode para decodificar cadenas de bytes en cadenas comunes:

 df['COLUMN1'].str.decode("utf-8") 

Para hacer esto para varias columnas, puede seleccionar solo las columnas str:

 str_df = df.select_dtypes([np.object]) 

convertir todos ellos:

 str_df = str_df.stack().str.decode('utf-8').unstack() 

A continuación, puede intercambiar los cols convertidos con los cols df originales:

 for col in str_df: df[col] = str_df[col] 
 df['COLUMN1'].apply(lambda x: x.decode("utf-8"))