为什么使用np.genfromtxt读取多个csv数据文件时仅返回nan?
问题原因
np.genfromtxt 方法的第一个输入参数仅支持单个文件路径、文件类对象或单行文本数据,不支持直接传入文件名列表。你直接传入FILE_NAMES列表时,方法会将列表本身作为待解析的数据源处理,自然无法读取对应文件的内容,最终返回nan值。
解决方法
你需要逐个读取每个文件的内容,再将多个数组合并为一个整体,参考代码如下:
import numpy as np FILE_NAMES = ['file1.csv', 'file2.csv'] # 逐个读取所有文件,参数保持你原来的配置即可 data_per_file = [np.genfromtxt(file_path, delimiter=',', skip_header=1, dtype=np.float64) for file_path in FILE_NAMES] # 按行拼接所有文件的数组,得到最终结果 full_data = np.concatenate(data_per_file, axis=0) print(full_data)
额外排查点
如果修改后仍出现nan值,可以按以下顺序排查:
- 确认文件的分隔符确实为英文逗号,部分csv文件可能使用分号、制表符作为分隔符
- 添加
skipinitialspace=True参数,忽略分隔符后的多余空格,避免空格导致解析失败 - 确认所有文件需要跳过的头部行数一致,避免误将数据行当作表头跳过
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

