Python Pandas read_csv:将特定字符串转换为numpy.inf
我有一个csv文件的数据。这些值是浮点值,但无限值除外,它由字符串“infinite”表示。这些值可以出现在任何列中 我想将“无限”字符串值转换为numpy.inf 使用numpy genfromtxt函数,我可以执行以下操作:Python Pandas read_csv:将特定字符串转换为numpy.inf,python,pandas,Python,Pandas,我有一个csv文件的数据。这些值是浮点值,但无限值除外,它由字符串“infinite”表示。这些值可以出现在任何列中 我想将“无限”字符串值转换为numpy.inf 使用numpy genfromtxt函数,我可以执行以下操作: dataparams={'delimiter':"\t", 'skip_header':1, 'names':True, 'missing_values':'INFINITE',
dataparams={'delimiter':"\t",
'skip_header':1,
'names':True,
'missing_values':'INFINITE',
'filling_values':np.inf}
data = np.genfromtxt(file,**dataparams)
我想对熊猫做同样的事情
我可以使用na_values='INFINITE'将'INFINITE'字符串转换为NaN,但这不是我想要的。Pandas文档表明Pandas>0.10支持inf值,但在读取文件时,我不知道如何进行转换。在pandas中有没有一个简单的方法可以做到这一点呢?派对有点晚了,但在我解决这个问题时,我使用了一个
TextIOBase
的包装器,我认为它不支持作为参数arg,你必须将其作为后处理步骤来做,或者定义一个转换器函数并将其传递给转换器
参数,或者你更愿意调用fillna吗(np.inf)
作为传递na_values='INFINITE'后的后处理步骤,我不想将'INFINITE'映射到NaN。数据集中可能缺少值。我想区分无限值和缺少的值。然后您必须调用replace
或传递映射到某个用户定义方法t的dictoconverters
param forread\u csv
这是有效的:pd.read\u csv(file,sep='\t',header=1)。replace('INFINITE',np.inf)
它对于大文件可能不是很有效。我一直在尝试使用converters param来实现这一点,但我不知道如何为所有列编写转换器。