简体   繁体   中英

Pandas: renaming columns that have the same name

I have a dataframe that has duplicated column names a, b and b. I would like to rename the second b into c.

df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6], "b1": [7, 8, 9]})
df.rename(index=str, columns={'b1' : 'b'})

Trying this with no success..

df.rename(index=str, columns={2 : "c"})

try:

>>> df.columns = ['a', 'b', 'c']

>>> df
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

您始终可以随时手动重命名所有列。

df.columns = ['a', 'b', 'c']

您可以简单地执行以下操作:

df.columns = ['a','b','c']

If your columns are ordered and you want lettered columns, don't type names out manually. This is prone to error.

You can use string.ascii_lowercase , assuming you have a maximum of 26 columns:

from string import ascii_lowercase

df = pd.DataFrame(columns=['a', 'b', 'b1'])

df.columns = list(ascii_lowercase[:len(df.columns)])

print(df.columns)

Index(['a', 'b', 'c'], dtype='object')

These solutions don't take into account the problem with having many cols. Here is a solution where, independent on the amount of columns, you can rename the columns with the same name to a unique name

 df.columns = ['name'+str(col[0]) if col[1] == 'name' else col[1] for col in enumerate(df.columns)]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM