Pandas:重命名具有相同名称的列

3
我有一个数据框,其中有重复的列名称a、b和b。我想将第二个b重命名为c。
df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6], "b1": [7, 8, 9]})
df.rename(index=str, columns={'b1' : 'b'})

尝试这个,但没有成功...


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

选择最适合您的答案以清除队列。 - Karn Kumar
5个回答

8

尝试:

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

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

1

这些解决方案没有考虑到有许多列的问题。 这里提供了一种解决方案,无论有多少列,您都可以将具有相同名称的列重命名为唯一名称。

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

0
您可以手动重命名所有列。
df.columns = ['a', 'b', 'c']

0
如果您的列已经排序并且您想要字母列,不要手动输入名称。这容易出错。
您可以使用string.ascii_lowercase,假设您最多有26列:
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')

-1

你可以简单地这样做:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接