优化DataFrame带年份标签的列重命名代码:去除重复逻辑
简洁实现DataFrame列重命名:数字列转年份标签
嘿,手动逐个写键值对确实太繁琐了!咱们可以用字典推导式来自动生成列名映射,既简洁又能避免手动输入的错误,下面给你两种实用的方案:
方案一:直接生成固定范围的映射
如果确定要重命名的列就是50到59,直接用字典推导式生成映射关系就行——观察规律:列号50对应2006,也就是列号 + 1956 = 目标年份,所以代码可以写成:
# 自动生成列号到年份字符串的映射 rename_mapping = {col: str(col + 1956) for col in range(50, 60)} # 执行重命名操作 GDP = GDP.rename(columns=rename_mapping)
range(50, 60)会生成50到59的所有整数,循环过程中自动计算对应的年份并转成字符串,完全不用手动写每一对键值。
方案二:仅重命名DataFrame中存在的目标列
如果不确定DataFrame里是否包含50-59的所有列(比如可能缺某几列),可以先筛选出存在的目标列再生成映射,这样更安全:
# 筛选出DataFrame中属于50-59范围的列 target_columns = [col for col in GDP.columns if 50 <= col <= 59] # 生成映射 rename_mapping = {col: str(col + 1956) for col in target_columns} # 重命名 GDP = GDP.rename(columns=rename_mapping)
这个方案只会处理DataFrame中实际存在的、符合范围的列,不会因为列不存在而报错。
之后如果年份的对应规则有变化(比如列号50要对应2007了),只需要修改col + 1956里的偏移量就行,非常灵活!
内容的提问来源于stack exchange,提问作者bariumdose
相关产品推荐
相关产品推荐

