pandas read_csv指定python引擎时列合并丢失如何解决?
问题解决方案
你遇到的异常是Python解析引擎的分隔符匹配逻辑和C引擎不同导致的,默认不会自动忽略字段分隔符前后的空白字符,多余的空格会导致分隔符识别失败,所有字段被合并为单列。
修改方案如下:
- 新增
skipinitialspace=True参数,开启后会自动忽略分隔符后的前置空格,对齐C引擎的解析行为 - 若你需要保留CSV自带的表头,删除
names=self.columns参数即可,手动传入列名会覆盖原表头;若你确实需要自定义列名,需确保skiprows参数已经跳过了原始表头行 - 可以将
delimiter参数替换为sep=r'\s*,\s*',通过正则匹配分隔符前后的任意空白,彻底解决空白字符导致的分隔异常
修改后的调用代码示例:
pd.read_csv(self.src_file ,skiprows = self.skip_header ,engine = 'python' if self.skip_footer >0 else 'c' ,sep = r'\s*,\s*' ,skipinitialspace = True ,skipfooter = self.skip_footer ,**kwargs)
如果需要自定义列名,可以在读取完成后通过df.columns = 自定义列名列表的方式设置,避免读取阶段的参数冲突。
内容的提问来源于stack exchange,提问作者Lemon
相关产品推荐
相关产品推荐

