¿Cómo puedo hacer que los encabezados de las columnas del dataframe pandas sean en minúsculas?

Quiero hacer minúsculas todas las cabeceras de columna en mi dataframe pandas

Ejemplo

Si tengo:

data = country country isocode year XRAT tcgdp 0 Canada CAN 2001 1.54876 924909.44207 1 Canada CAN 2002 1.56932 957299.91586 2 Canada CAN 2003 1.40105 1016902.00180 .... 

Me gustaría cambiar XRAT a xrat haciendo algo como:

 data.headers.lowercase() 

Para que me llegue:

  country country isocode year xrat tcgdp 0 Canada CAN 2001 1.54876 924909.44207 1 Canada CAN 2002 1.56932 957299.91586 2 Canada CAN 2003 1.40105 1016902.00180 3 Canada CAN 2004 1.30102 1096000.35500 .... 

No sabré los nombres de cada encabezado de columna antes de tiempo.

Puedes hacerlo así:

 data.columns = map(str.lower, data.columns) 

o

 data.columns = [x.lower() for x in data.columns] 

ejemplo:

 >>> data = pd.DataFrame({'A':range(3), 'B':range(3,0,-1), 'C':list('abc')}) >>> data ABC 0 0 3 a 1 1 2 b 2 2 1 c >>> data.columns = map(str.lower, data.columns) >>> data abc 0 0 3 a 1 1 2 b 2 2 1 c 

Podrías hacerlo fácilmente con str.lower para columns :

 df.columns = df.columns.str.lower() 

Ejemplo:

 In [63]: df Out[63]: country country isocode year XRAT tcgdp 0 Canada CAN 2001 1.54876 9.249094e+05 1 Canada CAN 2002 1.56932 9.572999e+05 2 Canada CAN 2003 1.40105 1.016902e+06 In [64]: df.columns = df.columns.str.lower() In [65]: df Out[65]: country country isocode year xrat tcgdp 0 Canada CAN 2001 1.54876 9.249094e+05 1 Canada CAN 2002 1.56932 9.572999e+05 2 Canada CAN 2003 1.40105 1.016902e+06 

Si desea cambiar el nombre utilizando una llamada de método encadenado, puede usar

 data.rename( columns=unicode.lower ) 

(Python 2)

o

 data.rename( columns=str.lower ) 

(Python 3)