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

如何用Pandas原样解析含"None"的多语言翻译CSV文件?

问题描述

正在处理一个包含翻译编号ID及多语言条目的大型CSV文件,这些条目是应用的本地化字符串。在解析并修改条目时,遇到了CSV中存在独立字符串"None"的问题。

测试CSV示例(test.csv):

2759,Keine,Keine,null,nan,,Nessuno,Žádné,Ingen,Nenhum,Nada,无,無し,Brak,無
2762,Keine,"None",Нет,Aucun,None,Nessuno,Žádné,Ingen,Nenhum,Nada,无,無し,Brak,無

设置不同的null相关值测试Pandas解析器,其中空条目是翻译工作中的正常情况,需解析为空字符串。但运行读取脚本后,所有"None"、"null"、"nan"及空条目都被解析为NaN。

尝试用fillna('')会保留空字段但清除所有"None";尝试先替换[None]为占位符再复原的方法,却将所有NaN转为了"None",不符合需求。希望找到方法让Pandas原样解析CSV,保留原有值,不想手动解析而丢失Pandas的便捷功能。

解决方案

可以通过配置Pandas读取CSV时的参数,精准控制值的解析规则,同时保留Pandas的便捷功能:

  • 仅将空条目解析为NaN:关闭默认的NaN识别规则,只指定空字符串为要转为NaN的对象,最后再将NaN转为空字符串,这样"None"、"null"、"nan"都会原样保留。
    示例代码:

    import pandas as pd
    
    df = pd.read_csv('test.csv', na_values=[''], keep_default_na=False)
    df = df.fillna('')
    

    其中keep_default_na=False会禁用Pandas默认识别为NaN的列表(默认包含"None"、"null"、"nan"等),na_values=['']仅标记空条目为NaN,后续fillna('')将其转为空字符串。

  • 精准指定需转为NaN的值:如果需要把"null"、"nan"转为空字符串但保留"None",可以在na_values中明确列出目标值:

    df = pd.read_csv('test.csv', na_values=['null', 'nan', ''], keep_default_na=False)
    df = df.fillna('')
    
  • 强制所有列为字符串类型:通过dtype=str让Pandas直接以字符串格式读取所有列,不会自动解析任何值为NaN,空条目会被转为空字符串,其他字符串完整保留:

    df = pd.read_csv('test.csv', dtype=str)
    

    若需要ID列保持数值类型,可单独指定列类型:

    df = pd.read_csv('test.csv', dtype={'ID': int})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:12:09