2017-01-09 2 views
1

У меня есть форма данных pandas формы (455698, 62). Я хочу сохранить его как файл csv и загрузить его позже с помощью pandas. Сейчас я делаю это:Сохранение как csv corrupts dataframe

df.to_csv("/path/to/file.csv",index=False,sep="\\", encoding='utf-8') #saving 
df=pd.read_csv("/path/to/file.csv",delimiter="\\",encoding ='utf-8') #loading 

и я получаю dataframe с формой (455700, 62): 2 больше строк? Когда я подробно проверяю (глядя на все уникальные значения в каждом столбце), я обнаружил, что некоторые значения изменяли столбцы в процессе.

Я пробовал несколько разделителей, заставляя dtype = «объект», и я не могу понять, где ошибка. Что я должен попробовать?

+0

Вам необходимо отправить исходные данные, воспроизводящие это, также вы можете найти то, что дополнительные столбцы. Вы можете сохранить начальные столбцы как 'first_cols = df.columns', затем загрузить df и сравнить' second_cols = other_df.columns', а затем сделать 'first_cols.difference (second_cols)' – EdChum

+0

очень маленький проблеск данных. отлично, чтобы иметь идею ... – fedepad

+0

это дополнительные строки, а не дополнительные столбцы. Я не думаю, что могу опубликовать необработанные данные, поскольку он очень большой, и я не знаю, где проблема (IMO это только одна или две строки, которые вызывают эту проблему) – CoMartel

ответ

2

Возможно ли, что некоторые из ваших строк содержат символ новой строки (\n)?

В этом случае я бы предложил использовать квотирование при сохранении файла CSV:

import csv 

df.to_csv("/path/to/file.csv",index=False,sep="\\", encoding='utf-8', quoting=csv.QUOTE_NONNUMERIC) 
... 
+0

Я пробовал и, похоже, работает! Большое спасибо, но можете ли вы объяснить? Я, хотя панды уже цитировали значения по умолчанию? – CoMartel

+0

@HarryPotfleur, на самом деле я немного смущен - я попытался воспроизвести его, и я не смог его воспроизвести, используя Pandas (версия 0.19.2) – MaxU

+0

У меня такая же версия, и она работает – CoMartel