我刚刚开始使用Pandas,我正在使用read_csv()
方法读取csv文件。我遇到的困难是阻止大熊猫将我的电话号码转换为大号,而不是将它们保留为字符串。我定义了一个只留下数字的转换器,但它们仍然转换为数字。当我将转换器更改为在电话号码前加上“z”时,它们就会保留字符串。有没有办法在不修改字段值的情况下保留字符串?
答案 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_types
。
https://github.com/pydata/pandas/blob/master/pandas/io/parsers.py
您可以随时在阅读文件后指定所需的类型:
df.phone = df.phone.astype(str)