值错误:无法将字符串转换为浮点数:id

111

我正在运行以下Python脚本:

#!/usr/bin/python

import os,sys
from scipy import stats
import numpy as np

f=open('data2.txt', 'r').readlines()
N=len(f)-1
for i in range(0,N):
    w=f[i].split()
    l1=w[1:8]
    l2=w[8:15]
    list1=[float(x) for x in l1]
    list2=[float(x) for x in l2]
    result=stats.ttest_ind(list1,list2)
    print result[1]

然而我遇到了如下错误:

ValueError: could not convert string to float: id

我对此感到困惑。 当我在交互式部分尝试仅针对一行执行此操作时,而不是使用脚本的for循环:

>>> from scipy import stats
>>> import numpy as np
>>> f=open('data2.txt','r').readlines()
>>> w=f[1].split()
>>> l1=w[1:8]
>>> l2=w[8:15]
>>> list1=[float(x) for x in l1]
>>> list1
[5.3209183842, 4.6422726719, 4.3788135547, 5.9299061614, 5.9331108706, 5.0287087832, 4.57...]

它运行良好。

有人能解释一下吗?谢谢。


3
当从csv文件中读取数据帧时,若数据类型为df = df[['p']].astype({'p': float}),可能会出现ValueError: could not convert string to float:这种错误。如果csv文件中存在空格,则Python将无法将空格识别为NaN。您需要使用df = df.replace(r'^\s*$', np.nan, regex=True)将空单元格覆盖为NaN。 - Alfred Wallace
12个回答

0
在处理数据中的这些错误值时,一种不错的选择是在读取CSV文件时通过指定na_values来删除它。这将识别字符串并将其视为NA/NaN。
默认情况下,以下值被解释为NaN:''、'#N/A'、'#N/A N/A'、'#NA'、'-1.#IND'、'-1.#QNAN'、'-NaN'、'-nan'、'1.#IND'、'1.#QNAN'、''、'N/A'、'NA'、'NULL'、'NaN'、'None'、'n/a'、'nan'、'null'。所以在你的情况下,由于数据中出现了字符串'id'导致报错,你可以按照以下步骤进行操作:
df = pd.read_csv('file.csv', na_values = ['id'])

这将把包含'id'的列的值指定为null,并解决在感兴趣的列上运行分析时出现的值错误。

0
当你在使用panda数据框或者序列时遇到这个错误,请按照以下步骤进行处理:
import pandas as pd

df["columns1"] = pd.to_number(df["column1"] , errors='coerce')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接