如何防止"pandas.read_csv" arg 'dtype=np.float32' 将索引列转换为浮点数?



我有一个CSV文件要由panda读取,它的格式如下:

name,   quart2c,    p_rat,  other_col
avg,    1,          2,      3
std,    1,          2,      3

我想pandas.read_csv()保证所有单元格的类型都是float32,除了第一列("name"(,因为那是索引列。

因此,我这样传递两个参数:

pandas.read_csv(file_path, index_col=0, dtype=np.float32)
# or like this, both failed
pandas.read_csv(file_path, index_col='name', dtype=np.float32)

但Panda仍然试图将第一列转换为浮动列,并提出了一个例外:

ValueError:无法将字符串转换为浮点值:"avg">

我想要什么:

  1. CSV文件是由我自己编写的另一个程序制作的。如果结构不对,我可以很容易地调整
  2. 我想始终指定参数dtype=np.float32,以便检查是否有任何错误值。我不希望这些值也被解释为整数类型
  3. 索引列";name";应保留为index_col,因为它稍后将被使用。无论如何都应该NOT截断此列

我应该如何获得它?

最好是首先读取带有默认args的csv,给出索引col,然后转换整个df(这不会影响索引(:

pd.read_csv(file_path, index_col='name').astype(float)

您可以在dtypeconverters中尝试这种方式。

import pandas as pd
df = pd.read_csv('test.csv', dtype = 'float32', converters = {'name': str},index_col='name')  
print(df)

输出:

quart2c      p_rat    other_col
name                                    
avg          1.0        2.0          3.0
std          1.0        2.0          3.0

相关内容

  • 没有找到相关文章

最新更新