如何去除预测周期列字符串的前导零?用于DataFrame合并
解决DataFrame预测周期列名格式化问题
以下是几种高效实现列名格式化的方法,完美匹配你的需求:
方法一:拆分后转整数自动去前导零(最稳妥)
利用整数类型自动忽略前导零的特性,拆分列名后转整数再转回字符串,最后拼接:
current_cols = [ '01+11', '02+10', '03+09', '04+08', '05+07', '06+06', '07+05', '08+04', '09+03', '10+02', '11+01' ] desired_out = ['+'.join(str(int(part)) for part in col.split('+')) for col in current_cols]
这种方法能避免lstrip('0')可能出现的空字符串问题(比如列名是00+00时,lstrip会得到+,而转整数会得到0+0),兼容性更强。
方法二:正则表达式替换(最简洁)
用正则直接匹配并移除每个数字段的前导零:
import re current_cols = [ '01+11', '02+10', '03+09', '04+08', '05+07', '06+06', '07+05', '08+04', '09+03', '10+02', '11+01' ] desired_out = [re.sub(r'\b0+(?=\d)', '', col) for col in current_cols]
正则\b0+(?=\d)会匹配单词边界后紧跟数字的一个或多个前导零,精准替换为空,无需拆分拼接。
方法三:直接处理DataFrame列名
如果要直接修改DataFrame的列名,用rename方法配合lambda表达式即可:
import pandas as pd df = pd.DataFrame(columns=current_cols) # 用方法一的逻辑重命名 df = df.rename(columns=lambda x: '+'.join(str(int(part)) for part in x.split('+'))) # 或者用方法二的正则逻辑 # df = df.rename(columns=lambda x: re.sub(r'\b0+(?=\d)', '', x))
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

