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

Pandas如何将表头含Price的列数值格式化为美元货币格式

实现方案

你可以根据自己的使用场景选择以下两种实现方式:

场景1:仅展示/导出Excel时格式化,保留原始数值类型(不影响后续数值计算)

如果你需要后续继续对价格列做求和、排序等数值运算,推荐用这种方式,仅在输出时做格式渲染,不会修改原始数据:

import pandas as pd

# 先筛选所有表头含"Price"的列
price_cols = [col for col in df.columns if "Price" in col]

# 导出到Excel时设置货币格式
with pd.ExcelWriter("格式化结果.xlsx", engine="xlsxwriter") as writer:
    df.to_excel(writer, index=False)
    workbook  = writer.book
    worksheet = writer.sheets["Sheet1"]
    # 定义美元货币格式:带千分位分隔符、保留两位小数
    currency_fmt = workbook.add_format({"num_format": "$#,##0.00"})
    # 给所有价格列设置格式
    for col in price_cols:
        col_index = df.columns.get_loc(col)
        # 三个参数分别是:列起始位置、列结束位置、列宽、格式
        worksheet.set_column(col_index, col_index, 14, currency_fmt)

场景2:直接将DataFrame中的价格列转换为格式化后的字符串

如果你不需要后续做数值运算,只需要拿到格式化好的文本结果,直接用f-string格式化即可:

price_cols = [col for col in df.columns if "Price" in col]

for col in price_cols:
    # 先把列转为数值类型,避免非数值报错
    df[col] = pd.to_numeric(df[col], errors="coerce")
    # 格式化数值,空值返回空字符串
    df[col] = df[col].apply(lambda x: f"${x:,.2f}" if pd.notna(x) else "")

格式化后效果完全符合你的要求:数值1399会转为$1,399.00,1538.9会转为$1,538.90。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:24:02