Указание типа данных в считывателе Pandas csv

Я только начинаю с Pandas, и я читаю в CSV файле, используя метод read_csv(). Трудность, с которой я сталкиваюсь, не позволяет пандам преобразовывать мои телефонные номера в большие числа, вместо того, чтобы держать их как строки. Я определил конвертер, который только что оставил числа в одиночку, но затем они все равно преобразуются в числа. Когда я изменил свой конвертер, чтобы добавить "z" к номерам телефонов, они остались в строках. Есть ли способ сохранить их, не изменяя значения полей?

Ответ 1

Начиная с Pandas 0.11.0, вы можете использовать аргумент dtype для явного указания типа данных для каждого столбца:

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

Ответ 2

Похоже, вы не можете избежать того, чтобы панды пытались преобразовать числовые/логические значения в файл CSV. Взгляните на исходный код pandas для парсеров ввода-вывода, в частности функции _convert_to_ndarrays и _convert_types. https://github.com/pydata/pandas/blob/master/pandas/io/parsers.py

Вы всегда можете назначить тип, который вы хотите, после того, как прочитали файл:

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