我有一个dataframe (df),它有44列,我想重命名列2:44。我有一个长度为42的列表(namesList),它有新的列名。然后,我尝试使用列表重命名我的列:
df.columns[2:len(df.columns)] = namesList
然而,我得到了错误:
TypeError:索引不支持可变操作
为什么我会有这个错误?
发布于 2016-11-06 12:15:50
您需要生成新的列名--从旧列中生成第一和第二值,从list
生成另一列。
df.columns = df.columns[:2].tolist() + namesList
示例:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
namesList = ['K','L','M','N']
df.columns = df.columns[:2].tolist() + namesList
print (df)
A B K L M N
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
发布于 2022-01-27 18:05:39
我遇到了重命名第一个N列和最后N个列。根据您的需要替换N的值。
1)重命名最后N列(忽略前2列)
cols_to_update = df.columns[:N].tolist() + ['col2_new','col3_new']
df.columns = cols_to_update
2)重命名N列(忽略Last )
cols_to_update = ['col3_new','col4_new'] + df.columns[N:].tolist()
df.columns = cols_to_update
3)重命名中间中的列
cols_to_update = df.columns[:N].tolist() + ['col2_new','col3_new'] + df.columns[Y:].tolist()
df.columns = cols_to_update
4)重命名所有列--确保您分配的列表与df.columns的长度相同。
list = ['col1_new','col2_new', 'col3_new','col4_new']
df.columns = list
您可以找到更多的示例@ 在熊猫中重命名列的多种方法
https://stackoverflow.com/questions/40454042
复制