如何让DataFrame.to_csv的na_rep='NULL'作用于含表头的第一行?
解决表头缺失值替换为NULL的问题
你遇到的问题是pandas的to_csv方法里,na_rep='NULL'只处理数据行的缺失值,表头(列名)里的NaN不会被替换。要搞定这个,得先单独把列名里的缺失值换成'NULL',再导出。
具体步骤
先处理列名中的缺失值
用fillna直接替换列名里的NaN:import pandas as pd import sys # 假设你的DataFrame是data data.columns = data.columns.fillna('NULL')如果列名是非字符串类型,先转成字符串再替换:
data.columns = data.columns.astype(str).fillna('NULL')再调用to_csv导出
这时候导出的表头和数据里的缺失值都会变成'NULL':data.to_csv(sys.stdout, na_rep='NULL')
原理说明
na_rep参数的设计逻辑就是只作用于DataFrame的数据区域(即行部分),列名属于元数据范畴,不在它的处理范围内。所以必须手动先处理列名的缺失值,再执行导出操作。
内容的提问来源于stack exchange,提问作者Thomas Nevin K
相关产品推荐
相关产品推荐

