Pandas导入CSV时因列值含空格导致Test Results、S/N列数据读取不全的问题
Pandas导入带内嵌空格的CSV内容不完整的解决方法
你当前使用的基础pd.read_csv()其实已经完整读取到了CSV中的所有单元格内容,出现“导入不完整”的视觉效果,是两个原因叠加导致的:
- CSV内
Test Results、S/N两列的字符串本身被插入了大量无意义的分隔空格,不是连续的有效内容 - Pandas默认的控制台打印规则会自动截断长字符串、限制列展示宽度,因此print输出里只能看到两列的开头1-2个字符,容易误以为数据没有读全
第一步:验证CSV读取的完整性
运行以下代码,直接提取指定单元格的原始内容,绕开显示截断规则做校验:
scores_df = pd.read_csv('20210112.csv') # 直接查看第一行的两列完整原始值 print("Test Results列原始值:", scores_df.loc[0, 'Test Results']) print("S/N列原始值:", scores_df.loc[0, 'S/N'])
如果运行后能看到O K 、2 1 B . A 1 5 4 . 0 1 6 2 1 6 9 这类完整带空格的字符串,就说明CSV解析过程没有丢失数据,不需要反复调整读取参数。
第二步:批量清理两列的多余空格
直接对目标两列做批量空格移除,把内嵌的所有无意义空格替换为空值:
# 指定需要清理的列 clean_cols = ['Test Results', 'S/N'] # 批量替换列内所有空格 scores_df[clean_cols] = scores_df[clean_cols].apply( lambda col: col.str.replace(' ', '', regex=False) )
处理完成后,两列的内容会恢复成预期的有效格式:
- 原来的
O K会变成无空格的OK - 原来的
2 1 B . A 1 5 4 . 0 1 6 2 1 6 9会变成连续的设备编号21B.A154.0162169
第三步:调整显示规则,避免打印时内容截断
如果清理完数据后,print输出仍出现列内容截断的问题,可以手动调整Pandas的显示参数,关闭长字符串截断规则:
# 设置列最大显示宽度为无限制,展示完整字符串内容 pd.set_option('display.max_colwidth', None) # 重新打印即可看到全部完整列值 print(scores_df)
注意:原CSV是带双引号包裹的标准结构化格式,
read_csv()的默认参数就可以正确识别带内嵌空格的引号字段,不需要额外加分隔符、引号解析配置,避免因为不必要的参数调整引入新的读取错误。
内容的提问来源于stack exchange,提问作者tthammak-DE
相关产品推荐
相关产品推荐

