Pandas read_excel如何处理以逗号作为小数分隔符的Excel数据
无需转CSV的Excel逗号小数分隔符读取方案
方案1:读取后批量替换转换(推荐)
原理:以逗号作为小数分隔符的数值被pandas默认读取后会识别为字符串类型,直接对目标列做字符替换后转浮点型即可,适配所有系统环境,性能足够处理119个工作表的量级。
代码示例:
import pandas as pd # 初始化Excel文件对象,减少重复IO开销 excel_file = pd.ExcelFile("你的Excel文件路径.xlsx") # 按需配置目标工作表和数值列 target_sheets = excel_file.sheet_names # 读取全部工作表可直接用这个配置 # target_sheets = ["Sheet1", "Sheet3"] # 只读取指定工作表就用这个写法 numeric_cols = ["数值列1", "数值列2", "数值列3"] # 替换为你要读取的数值列列名 processed_data = [] for sheet_name in target_sheets: # 读取当前工作表的指定列,统一读为字符串避免自动识别异常 df = excel_file.parse(sheet_name, usecols=numeric_cols, dtype=str) # 批量处理数值列:替换逗号为小数点后转浮点型 for col in numeric_cols: # 如果存在点作为千位分隔符的情况,比如1.234,56,先加一步替换.str.replace(".", "")即可 df[col] = df[col].str.replace(",", ".").astype(float) processed_data.append(df) # 如需合并所有工作表数据直接绘图,执行以下拼接即可 merged_df = pd.concat(processed_data, ignore_index=True)
方案2:区域配置适配(适合固定本地环境)
如果你的Excel本身使用欧洲区域格式(默认逗号为小数分隔符),可以通过修改locale配置实现转换,兼容性弱于方案1,不同操作系统的locale命名存在差异:
import locale import pandas as pd # 示例为德语区域配置,Windows系统写"de_DE",Linux系统写"de_DE.utf-8" locale.setlocale(locale.LC_NUMERIC, "de_DE") # 读取后使用locale.atof方法转换字符串为数值 df = pd.read_excel("你的文件路径.xlsx", dtype=str) df["数值列"] = df["数值列"].apply(locale.atof)
内容的提问来源于stack exchange,提问作者Leonardo Araujo
相关产品推荐
相关产品推荐

