将CSV文件读入Pandas数据框作为浮点数。

7
我有一个 .csv 文件,顶部行和第一列是字符串,其余数据则为浮点数。我希望将其读入数据框中,并将第一行和第一列作为列名和索引,所有浮点值都为float64
如果我使用 df = pd.read_csv(filename,index_col=0),所有数值都保持为字符串。
如果我使用df = pd.read_csv(filename, index_col=0, dtype=np.float64),我会收到异常: ValueError: could not convert string to float,因为它尝试将第一列解析为float
由于有大量的列,而且我没有列名,所以我不想识别每个列以解析为float;我想解析每一列 除了 第一列。

1
你的数字格式是什么?我相信pandas可以在没有任何参数的情况下推断出数据类型。你试过了吗?结果如何? - juanpa.arrivillaga
我会发布一些示例数据... - doctorer
df.convert_objects(convert_numeric=True) 你可以在获取数据框之后转换值。 - omri_saadon
1
我在 .csv 中找到了一行非数字数据,所以整个列被解析为字符串。谢谢 juanpa.arrivillaga - doctorer
2个回答

4

获取所有列名列表,删除第一个。将其他列进行类型转换。

cols = df.columns
cols.remove('fistcolumn')
for col in cols:
    df[col] = df[col].astype(float)

2
原始代码是正确的。
df = pd.read_csv(filename,index_col=0)

但是,.csv文件的构建存在问题。

正如@juanpa.arrivillaga所指出的那样,如果一列中的所有数据都属于相同的dtype类型,那么不需要任何参数,pandas就会自动推断数据类型。由于虽然大多数数据是数字,但某一行包含非数字数据(实际上是日期),因此这些列被解释为字符串。从.csv文件中删除该行即可解决问题。


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