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

PowerQuery批量合并CSV时如何针对性转换特定数值?

解决CSV文件中逗号同时作为小数点和千分位的合并问题

针对Excel Power Query(你用的「获取数据」工具)的解决方案

直接在Power Query的合并流程中添加针对性转换步骤:

  • 定位到那个异常CSV对应的查询表,进入Power Query编辑器
  • 选中「单价」列,点击「添加列」→「自定义列」,输入以下公式:
    if Text.Contains([单价], ",") and not Text.Contains([单价], ".") 
    then Text.Replace([单价], ",", ".") 
    else [单价]
    
  • 删除原「单价」列,把新建的自定义列重命名为「单价」
  • 选中新的「单价」列,点击「转换」→「数据类型」→「小数」
  • 完成后回到合并流程,即可正常合并所有文件

针对Python批量处理的解决方案

通过规则区分两种逗号,批量修复并合并:

import pandas as pd
import os

def fix_price(price_str):
    # 仅替换不含小数点的逗号(属于小数点误用)
    if ',' in price_str and '.' not in price_str:
        return float(price_str.replace(',', '.'))
    # 千分位逗号直接移除后转小数
    elif ',' in price_str and '.' in price_str:
        return float(price_str.replace(',', ''))
    # 正常格式直接转换
    else:
        return float(price_str)

# 批量读取文件夹内所有CSV并合并
folder_path = '你的CSV文件夹路径'
all_data = []
for file in os.listdir(folder_path):
    if file.endswith('.csv'):
        df = pd.read_csv(os.path.join(folder_path, file), converters={'单价': fix_price})
        all_data.append(df)

merged_df = pd.concat(all_data, ignore_index=True)

核心逻辑:只修正那些没有小数点的逗号(判定为小数点误用),对带小数点的千分位逗号直接移除后转小数,既解决报错问题,又保留正常的千分位格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:00:03