Pandas: renombra una sola columna de DataFrame sin saber el nombre de la columna

Sé que puedo cambiar el nombre de las columnas pandas.DataFrame individuales con:

drugInfo.rename(columns = {'col_1': 'col_1_new_name'}, inplace = True) 

Pero me gustaría cambiar el nombre de una columna sin saber su nombre (según su índice, aunque sé que los diccionarios no lo tienen). Me gustaría cambiar el nombre de la columna número 1 de esta manera:

 drugInfo.rename(columns = {1: 'col_1_new_name'}, inplace = True) 

Pero en el DataFrame.columns dict no hay una entrada ‘1’, por lo que no se hace ningún cambio de nombre. ¿Cómo podría lograr esto?

Deberia trabajar:

 drugInfo.rename(columns = {list(drugInfo)[1]: 'col_1_new_name'}, inplace = True) 

Ejemplo:

 In [18]: df = pd.DataFrame({'a':randn(5), 'b':randn(5), 'c':randn(5)}) df Out[18]: abc 0 -1.429509 -0.652116 0.515545 1 0.563148 -0.536554 -1.316155 2 1.310768 -3.041681 -0.704776 3 -1.403204 1.083727 -0.117787 4 -0.040952 0.108155 -0.092292 In [19]: df.rename(columns={list(df)[1]:'col1_new_name'}, inplace=True) df Out[19]: a col1_new_name c 0 -1.429509 -0.652116 0.515545 1 0.563148 -0.536554 -1.316155 2 1.310768 -3.041681 -0.704776 3 -1.403204 1.083727 -0.117787 4 -0.040952 0.108155 -0.092292 

Probablemente es más legible indexar en el atributo de columnas de dataframe:

 df.rename(columns={df.columns[1]:'col1_new_name'}, inplace=True) 

Así que para ti:

 drugInfo.rename(columns = {drugInfo.columns[1]: 'col_1_new_name'}, inplace = True)