我有以下形式的txt文件:
请注意,某些字段已完全丢失,但缺少这些字段非常重要。在附图中,由于技术故障,所有测量都丢失了,但是可能发生只有一列中的值丢失而其他列被丢失的情况。
我正在尝试使用以下代码导入此类.txt文件。
import numpy as np
data=np.genfromtxt(filepath, skip_header=1, invalid_raise=False, usecols=(2, 3, 4, 5, 6, 7))
导致错误:
第2123行(有2列而不是6列)
第3171行(有2列而不是6列)
第3172行(有2列而不是6列)
但仍会产生一些可用的结果。正如我所说,缺少13:30的数据这一事实很重要,不能简单地忽略。但是,上面的代码就是这样 - 忽略/跳过13:30的行。相反,我希望它用一些预定义的值填充该行,或者只是以某种其他方式表示它,以后可以在处理中识别。
有什么办法吗?
答案 0 :(得分:2)
np.genfromtxt()
接受参数missing_values
。如果您将其设置为:
data=np.genfromtxt(filepath, skip_header=1, invalid_raise=False, usecols=(2,3, 4, 5, 6, 7), missing_value=???)
它应该用nan
替换缺失的值。但请注意,如果这应该有效,必须有一个填充物。否则,您可以使用usecols
参数,即首先选择缺少值的cols并将其与主数据分开。之后你可以再次合并它们。处理缺失值的第二个非常好的方法是使用pandas.read_csv()
代替。此外,它比np.genfromtxt
快得多。