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
相关产品推荐
相关产品推荐

