2015-12-29 10 views
1

Есть ли способ предотвратить запись кадра данных Pandas в формате CSV без преобразования чисел, отформатированных как строки для чисел?Pandas пишите в CSV указать dtype

Скажем, у меня есть следующий dataframe:

>>> import pandas as pd 
>>> d=pd.DataFrame(index=['07000','07001','07002'], data=[1,2,3], columns=['Value']) 
>>> d.index.name='Zipcode' 
>>> d 
     Value 
Zipcode  
07000  1 
07001  2 
07002  3 
>>> 

Я могу подтвердить, что мой индекс не является числовым:

>>> print str(d.index.dtype) 
object 
>>> 

Но когда я пишу в CSV-файл, используя d.to_csv('MyFile.csv') индекс превращают в целое число, и я теряю лидерство 0. Любые предложения?

+4

Вы уверены, что нули теряются при записи на csv? Я воспроизвел ваши результаты и рассмотрел мой файл csv, и все нули есть. Я предполагаю, что они потеряны любой программой, которую вы затем используете для чтения нового файла. – Alexander

+0

Согласовано. Я воспроизвел код. Когда я открываю файл csv в txt-редакторе, я получаю ведущие нули. Если вы откроете файл в программе для работы с электронными таблицами (или вернете его обратно в кадр данных pandas), нули будут сброшены в этой точке. – laurakurup

+0

Ах спасибо. Таким образом, проблема на самом деле, когда я читаю в csv не тогда, когда я его пишу. И я могу указать dtype при чтении в csv, поэтому проблема решена. – AJG519

ответ

2

Нет проблем с d.to_csv('MyFile.csv'). У меня есть все нули в моем CSV-файле, запустив код.

Если вы используете d1 = pd.read_csv('MyFile.csv', index_col=0), стартовые нули будут сброшены в d1.

Смежные вопросы