如何将谷歌表格JS数字格式化功能迁移到Python pandas脚本
实现Pandas读取工作表并格式化数字字符串的方案
需要将无标点的长数字字符串(如12345678901234567890)按照前7位-接下来2位.接下来4位.接下来1位.接下来2位.剩余部分的规则格式化,最终输出1234567-89.0123.4.56.7890格式的结果。
核心格式化逻辑(对应原JS逻辑转Python)
Python的字符串切片语法和JS的slice行为一致,可以直接实现相同的拆分规则:
def format_number(s): # 先转换为字符串,避免数字类型无法切片 s_str = str(s) # 可选:校验输入长度,避免切片越界报错 if len(s_str) < 17: return s_str # 长度不足时返回原内容,也可改为抛出ValueError提示无效输入 # 按规则拼接格式化后的字符串 return f"{s_str[:7]}-{s_str[7:9]}.{s_str[9:13]}.{s_str[13:14]}.{s_str[14:16]}.{s_str[16:]}"
嵌入Pandas读取工作表的完整脚本
假设工作表中有一列名为raw_number的列需要处理,完整代码示例:
import pandas as pd def format_number(s): s_str = str(s) if len(s_str) < 17: return s_str return f"{s_str[:7]}-{s_str[7:9]}.{s_str[9:13]}.{s_str[13:14]}.{s_str[14:16]}.{s_str[16:]}" # 读取工作表(Excel用read_excel,CSV用read_csv) df = pd.read_excel("你的文件路径.xlsx") # 对目标列应用格式化函数,生成新列 df["formatted_number"] = df["raw_number"].apply(format_number) # 可选:将处理后的结果保存到新文件 df.to_excel("格式化后的文件.xlsx", index=False)
补充说明
- 如果处理的是CSV文件,将
pd.read_excel替换为pd.read_csv即可。 - 若需要批量处理多个列,可通过循环遍历列名重复
apply步骤。 - 长度校验逻辑可根据实际需求调整,比如对不符合长度要求的输入抛出明确异常。
内容的提问来源于stack exchange,提问作者user20083537
相关产品推荐
相关产品推荐

