如何使用For循环在Python中修改DataFrame列名?
关于DataFrame列名重命名代码的问题分析与优化
首先咱们来拆解下你代码里存在的几个小问题:
- 拼写疏漏:变量名
datafram少了个字母'e',应该是dataframe,这个小错误会直接导致运行报错。 - 字典遍历逻辑错误:
renamed_column_name.keys()[i]写法不对——Python 3里字典的keys()返回的是视图对象,不支持索引访问,而且i本身就是字典的键,完全没必要多此一举去索引取键。 - 低效的重命名方式:你循环调用
rename逐个修改列名,其实Pandas的rename方法支持直接传入完整的列名字典,一次就能完成所有重命名,效率和简洁度都更高。
修正后的可运行版本
def renaming_columns(headers): rename_dict = {} for col in headers: print(col) # 如果是在Jupyter环境,用display(col)也没问题,print更适配普通脚本 new_name = input(f"Please enter relevant name for '{col}': ") rename_dict[col] = new_name return rename_dict # 获取列名映射字典 renamed_column_map = renaming_columns(headers) # 一次完成所有列名重命名 dataframe = dataframe.rename(columns=renamed_column_map)
更简洁的优化实现
可以用字典推导式简化函数内的逻辑,让代码更紧凑:
def renaming_columns(headers): return {col: input(f"Please enter relevant name for '{col}': ") for col in headers} # 使用方式不变 renamed_column_map = renaming_columns(headers) dataframe = dataframe.rename(columns=renamed_column_map)
小提示:如果是在Jupyter Notebook环境中,display(col)能正常工作,但如果是普通Python脚本,print(col)的兼容性会更好。
内容的提问来源于stack exchange,提问作者Prakhar Srivastava
相关产品推荐
相关产品推荐

