我有一个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">
我想要什么:
- CSV文件是由我自己编写的另一个程序制作的。如果结构不对,我可以很容易地调整
- 我想始终指定参数
dtype=np.float32
,以便检查是否有任何错误值。我不希望这些值也被解释为整数类型 - 索引列";name";应保留为
index_col
,因为它稍后将被使用。无论如何都应该NOT截断此列
我应该如何获得它?
最好是首先读取带有默认args的csv,给出索引col,然后转换整个df(这不会影响索引(:
pd.read_csv(file_path, index_col='name').astype(float)
您可以在dtype
和converters
中尝试这种方式。
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