71

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

4

2 回答 2

80

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

d = pandas.read_csv('foo.csv', dtype={'BAR': 'S10'})
于 2013-08-29T01:22:23.857 回答
19

看起来您无法避免 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)
于 2012-05-28T08:16:28.780 回答