我有一个包含重复列名 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"})
尝试:
>>> df.columns = ['a', 'b', 'c']
>>> df
a b c
0 1 4 7
1 2 5 8
2 3 6 9
这些解决方案没有考虑到有很多列的问题。 这是一个解决方案,无论列的数量如何,您都可以将具有相同名称的列重命名为唯一的名称
df.columns = ['name'+str(col[0]) if col[1] == 'name' else col[1] for col in enumerate(df.columns)]
您始终可以手动重命名所有列。
df.columns = ['a', 'b', 'c']
如果您的列是有序的并且您想要字母列,请不要手动键入名称。这很容易出错。
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')
为了借鉴 @aze45sq6d 的答案,这里有另一个解决方案,它允许您按列的顺序更改列的名称(如索引,但不是技术上的):
column_indices_to_change = {5: 'New name'}
df.columns = [column_indices_to_change.get(enum, col) for enum, col in enumerate(df.columns)]
你可以简单地做:
df.columns = ['a','b','c']