在Pandas csv阅读器中指定数据类型

时间:2012-05-14 21:01:59

标签: python pandas

我刚刚开始使用Pandas,我正在使用read_csv()方法读取csv文件。我遇到的困难是阻止大熊猫将我的电话号码转换为大号,而不是将它们保留为字符串。我定义了一个只留下数字的转换器,但它们仍然转换为数字。当我将转换器更改为在电话号码前加上“z”时,它们就会保留字符串。有没有办法在不修改字段值的情况下保留字符串?

2 个答案:

答案 0 :(得分:41)

从Pandas 0.11.0开始,您可以使用dtype参数显式指定每列的数据类型:

d = pandas.read_csv('foo.csv', dtype={'BAR': 'S10'})

答案 1 :(得分:16)

看起来你无法避免pandas试图在CSV文件中转换数值/布尔值。查看IO解析器的pandas源代码,特别是函数_convert_to_ndarrays_convert_typeshttps://github.com/pydata/pandas/blob/master/pandas/io/parsers.py

您可以随时在阅读文件后指定所需的类型:

df.phone = df.phone.astype(str)