2014-11-15 30 views
0

我希望能夠追加到.txt文件每次我運行一個函數。輸出和導入列表到熊貓DataFrame

我想寫這個函數的輸出是這樣的:

somelist = ['a','b','b','c'] 
somefloat = -0.64524 
sometuple = (235,633,4245,524) 
output = tuple(somelist,somefloat,sometuple) (the output does not need to be in tuple format.) 

現在,我輸出是這樣的:

outfile = open('log.txt','a') 
out = str(output)+'\n 
outfile.write(out) 

這類作品,但我有像這樣導入它:

with open('log.txt', "r") as myfile: 
    mydata = myfile.readlines() 
    for line in mydata: 
     line = eval(line) 

理想情況下,我希望能夠將其直接導入到熊貓數據幀是這樣的:

dflog = pd.read_csv('log.txt') 

並將它產生與包含列表中的第一列中的三列的數據集(字符串格式是細),含有浮標的第二列,和含有元組的第三列(與列表相同的交易)。

我的問題是:

  1. 是否有辦法追加的格式輸出,可以更方便地導入到大熊貓

  2. 是否有這樣做的一個簡單的方法,這似乎就像一個非常普通的任務,如果有人把這個做成一行或兩行代碼,我不會感到驚訝。要做到這一點

+0

預期產量是多少?你能舉出一個你期望從'pd.read_csv'命令獲得的熊貓數據框的例子嗎? – cd98

+0

輸出將是三列數據集,第一列包含['a','b','b','c'],第二列包含-0.64524,第三列包含(235,633,4245,524)。 – Chris

回答

1

一種方法是你列一個自定義分隔符如'|'

說分開:

somelist = ['a','b','b','c'] 
somefloat = -0.64524 
sometuple = (235,633,4245,524) 
output = str(somelist) + "|" + str(somefloat) + "|" + str(sometuple) 

(如果你想有更多的列,然後使用string.join()或類似的東西)

然後,就像以前一樣:

outfile = open('log.txt','a') 
out = output + '\n' 
outfile.write(out) 

由於只是讀取整個文件,

pd.read_csv("log.txt", sep='|') 

請注意,使用列表或元組在pandas一個條目是不鼓勵(我無法找到,雖然一個官方參考)。對於具有操作的加速,可以考慮將你的元組或列表分割成單獨的列,以便留下漂浮,整數或簡單的字符串。如果您需要,熊貓可以輕鬆處理自動命名。

+0

這工作。我不想給列表中的每個條目和元組列它自己的列,因爲它們不會成爲固定數量的項目,我希望能夠獲取列的內容而不必參考當我使用輸出前進時的動態列數。謝謝您的幫助! – Chris