如何用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

