Python:字典中DataFrame列名末尾数字移除代码失效求助
问题分析与改进方案
你的代码没生效的核心原因:仅修改了循环里的临时变量col,完全没改动DataFrame的实际列名。循环中的col只是列名的副本,赋值操作不会同步到val.columns上。
改进方法一:批量替换(推荐,更简洁高效)
直接用Pandas的字符串方法批量处理列名,不用逐个循环:
import re for key, val in df.items(): if key != "name1": # 正则替换列名末尾的所有数字字符 val.columns = val.columns.str.replace(r'\d+$', '', regex=True)
改进方法二:循环生成新列名列表
如果坚持用循环的方式,需要先收集所有修改后的列名,再一次性替换原列名:
import re for key, val in df.items(): if key != "name1": new_columns = [] for col in val.columns: # 移除列名末尾的数字 cleaned_col = re.sub(r'\d+$', '', col) new_columns.append(cleaned_col) # 替换原列名,这一步才是真正修改DataFrame的列名 val.columns = new_columns
额外注意
如果字典中的DataFrame是其他DataFrame的切片视图,建议先做拷贝(val = val.copy())再修改列名,避免意外改动原数据。
内容的提问来源于stack exchange,提问作者ella
相关产品推荐
相关产品推荐

