2013-12-18 6 views
4

Создаю одноклассовый панд DataFrame, содержащий только строки. Один ряд пуст. Когда я пишу файл на диске, пустая строка получает пустую цитату «», в то время как я вообще не хочу цитаты. Вот как повторить вопрос:Запись pandas DataFrame в csv-файл с некоторыми пустыми строками

import pandas as pd 
df = "Name=Test\n\n[Actual Values]\nLength=12\n" 
df = pd.DataFrame(df.split("\n")) 
df.to_csv("C:/Users/Max/Desktop/Test.txt", header=False, index=False) 

Выходной файл должен выглядеть так:

Name=Test 
[Actual Values] 

Length=12 

Но вместо того, чтобы, как это:

Name=Test 
[Actual Values] 
"" 
Length=12 

Есть ли способ, чтобы инструктировать панд не написать кавычки и оставить пустую строку в выходном текстовом файле? Большое спасибо.

+0

я бы подумал, что квотирование = 2 сделал бы это ... но это не кажется ... получить 'Ошибка: запись одного пустого поля должна быть цитирована', интересно. –

ответ

1

Существует параметр для DataFrame.to_csv, называемый na_rep. Если у вас есть значения None, он заменит их тем, что вы передадите в это поле.

import pandas as pd 
df = "Name=Test\n" 
df += "\n[Actual Values]\n" 
df += "Length=12\n" 
df = pd.DataFrame(df.split("\n")) 
df[df[0]==""] = None 
df.to_csv("pandas_test.txt", header=False, index=False, na_rep=" ") 

К сожалению, похоже, проходит в na_rep="" напечатает кавычки в CSV. Тем не менее, если вы передадите в одном пространстве (na_rep=" ") он выглядит лучше эстетически ...

Конечно, вы всегда можете написать свою собственную функцию для вывода CSV, или просто заменить «» в выходном файле с помощью:

f = open(filename, 'r') 
text = f.read() 
f.close() 
text = text.replace("\"\"","") 
f = open(filename, 'w') 
f.write(text) 
f.close() 

а вот как вы могли бы написать свой собственный to_csv() метод:

def to_csv(df, filename, separator): 
    f = open(filename, 'w') 
    for col in df.values: 
     for row in col: 
      f.write(row + separator) 
    f.close() 
+0

На самом деле способ, которым вы это делаете, заменяет «quotes» пробелом. Мне нужно не пустое место, просто пустая строка (извините, если это было неясно!). – user1242808

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