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

Pandas中DataFrame转XML时价格数值被放大10倍问题求助

Pandas转XML时Price字段被放大10倍的排查与解决方法

排查步骤

  • 先确认DataFrame中preço列的实际值:执行print(df['preço'].iloc[0])查看,若输出已经是3361176,说明问题出在数据读取或转换环节,而非XML生成阶段。
  • 检查原始输入数据格式:如果数据源是CSV/Excel,确认价格字段的小数点是用.还是,分隔——部分地区会用,作为小数点,若读取时未指定对应参数,会被误解析为整数。
  • 核查XML生成代码:检查是否存在意外的乘法操作(比如row['preço'] * 10),导致数值被放大。
  • 确认数据类型:查看df['preço'].dtype,若为整数类型,说明转换时丢失了小数信息,需调整转换逻辑。

解决建议

  1. 修正数值转换逻辑
    如果原始数据用逗号作为小数点分隔符,转换时必须指定decimal参数:
df['preço'] = pd.to_numeric(df['Preço'], errors='coerce', decimal=',')
  1. 修复数据读取环节
    若问题出在读取文件时,读取CSV/Excel时明确指定小数点分隔符:
# CSV示例
df = pd.read_csv('products.csv', decimal=',', usecols=['Preço', 'ProductName'])

# Excel示例(需openpyxl支持)
df = pd.read_excel('products.xlsx', decimal=',')
  1. 调整XML生成代码
    确保生成XML时直接使用原始数值,无额外运算:
import xml.etree.ElementTree as ET

root = ET.Element('root')
for _, row in df.iterrows():
    row_node = ET.SubElement(root, 'row')
    price_node = ET.SubElement(row_node, 'Price')
    # 直接转换为字符串,或格式化保留指定小数位
    price_node.text = f"{row['preço']:.1f}"
  1. 校验数值准确性
    转换后可通过以下代码批量检查数值范围,避免异常值:
# 筛选价格异常放大的行
print(df[df['preço'] > df['preço'].mean() * 5])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:33:20