You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas将DataFrame导出为逗号作小数分隔符的Excel文件

解决Pandas导出Excel用逗号作为小数分隔符的问题

问题原因

你用到的read_html里的decimal参数是读取阶段用于解析数据的(把HTML中的逗号小数转成Python默认的点分隔数值),但Pandas的to_excel确实没有直接设置小数分隔符的参数——因为Excel的小数显示格式本质是单元格格式设置,而非数据本身的存储格式(Python数值始终以点作为小数分隔符)。

解决方案1:用XlsxWriter引擎设置单元格格式(推荐,保留数值类型)

这种方法通过Excel的单元格格式规则,让数值显示为逗号分隔,同时保留数值类型(可在Excel中进行运算):

import pandas as pd

# 替换为你的实际DataFrame
df = pd.DataFrame({'销售额': [1234.56, 789.01, 10.23], '数量': [100, 25.5, 3.14]})

# 初始化Excel写入器,指定xlsxwriter引擎
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, index=None, sheet_name='数据')

# 获取工作簿和工作表对象
workbook = writer.book
worksheet = writer.sheets['数据']

# 创建带逗号小数分隔符的格式(这里设置保留两位小数,可按需调整)
comma_format = workbook.add_format({'num_format': '#,##0.00'})

# 遍历所有列,对数值列应用格式
for col_idx, col_name in enumerate(df.columns):
    # 判断是否为数值类型列
    if df[col_name].dtype in ('float64', 'int64'):
        # 设置列宽(可选)并应用格式
        worksheet.set_column(col_idx, col_idx, 18, comma_format)

# 保存并关闭写入器
writer.close()

解决方案2:转换为带逗号的字符串(适合仅展示场景)

如果不需要保留数值运算能力,可以直接把数值转为带逗号的字符串:

import pandas as pd

df = pd.DataFrame({'销售额': [1234.56, 789.01, 10.23]})

# 将数值列转为带逗号的字符串,保留两位小数
df['销售额'] = df['销售额'].apply(lambda x: f"{x:.2f}".replace('.', ','))

# 导出Excel
df.to_excel('test.xlsx', index=None)

注意:这种方法会把单元格转为文本类型,无法在Excel中进行数值计算。

内容的提问来源于stack exchange,提问作者Arete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:37:20