Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas: Rename single DataFrame column without knowing column name

Tags:

python

pandas

I know I can rename single pandas.DataFrame columns with:

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

But I'd like to rename a column without knowing its name (based on its index - although I know dictionaries don't have it). I would like rename column number 1 like this:

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

But in the DataFrame.columns dict there is no '1' entry, so no renaming is done. How could I achieve this?

like image 917
afrendeiro Avatar asked Oct 13 '14 08:10

afrendeiro


People also ask

How do I rename an unnamed column in a data frame?

You can rename the column in Pandas dataframe using the df. rename( columns={“Old Column Name”:”New Column Name” } ,inplace=True) statement.

How do I rename an unnamed zero column?

rename( columns={0 :'new column name'}, inplace=True ) . There is no need to use 'Unnamed: 0' , simply use the column number, which is 0 in this case and then supply the 'new column name' .

How do I rename a third column in a data frame?

Method 1: Using rename() function One way of renaming the columns in a Pandas Dataframe is by using the rename() function.


1 Answers

Should work:

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

Example:

In [18]:  df = pd.DataFrame({'a':randn(5), 'b':randn(5), 'c':randn(5)}) df Out[18]:           a         b         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 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 

It is probably more readable to index into the dataframe columns attribute:

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

So for you:

drugInfo.rename(columns = {drugInfo.columns[1]: 'col_1_new_name'}, inplace = True) 
like image 114
EdChum Avatar answered Oct 13 '22 03:10

EdChum