为什么Pandas导入CSV文件时部分逗号分隔的小数未被正确转换?
问题原因
- 你遇到的部分行小数分隔符转换失败,是因为CSV文件采用了欧洲地区的数字格式规范:千位分隔符为
.,小数分隔符为,。你仅在pd.read_csv中配置了decimal=",",没有指定千位分隔符参数,导致包含千位分隔符的数值(即你提到的带小数的大数字)无法被识别为数值类型,会保留为字符串格式,因此输出时仍然显示逗号作为小数分隔符。其余没有千位分隔符的小数值可以被正常转换,因此输出符合预期。
修复方法
修改pd.read_csv的参数,增加thousands="."配置即可解决问题,修改后的读文件代码如下:
dfs = pd.read_csv(x, delimiter=";", skiprows=(1,2), decimal=",", thousands=".", na_values='NaN')
额外优化建议
你当前查找各通道第一个空值再截断表格的逻辑可以简化,无需单独提取每个通道判断索引,直接用dropna方法即可实现相同效果:
# 直接删除所有包含空值的行 dfs = dfs.dropna(axis=0, how='any')
内容的提问来源于stack exchange,提问作者lqope54
相关产品推荐
相关产品推荐

