2013-12-18 49 views
4

我創建一個只包含字符串的單列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

其實你這樣做的方式是用空格替換「」引號。我需要的不是空白空間,只是一個空行(抱歉,如果不清楚!)。 – user1242808