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

Gar*_*ner 43 python pandas

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

zer*_*323 49

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

d = pandas.read_csv('foo.csv', dtype={'BAR': 'S10'})
Run Code Online (Sandbox Code Playgroud)

  • 我重新讨论了这个主题,对'dtype`的支持已经添加到`pandas.read_fwf` :) (3认同)
  • 请注意,这对于其他一些输入函数(例如“pandas.read_fwf()”)不可用(但希望如此) (2认同)

lbo*_*lla 15

看起来你无法避免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)
Run Code Online (Sandbox Code Playgroud)

  • 这不能解决前导零丢失的问题 (2认同)