2015-01-08 123 views
4

我試圖將一個pandas DataFrame(單列)追加到現有的CSV中,很像this post,但它不起作用!相反,我的列被添加到csv的底部,並反覆重複(csv >>列大小的行)。這裏是我的代碼:將pandas DataFrame列添加到CSV

with open(outputPath, "a") as resultsFile: 
    print len(scores) 
    scores.to_csv(resultsFile, header=False) 
    print resultsFile 

端子輸出:4032 <open file '/Users/alavin/nta/NAB/results/numenta/artificialWithAnomaly/numenta_art_load_balancer_spikes.csv', mode 'a' at 0x1088686f0>

預先感謝您!

+1

兩個額外的信息將是有幫助的:1)'resultsFile'的現有內容是什麼樣的? (通過手動檢查文件來確認)以及2)'DataFrame DataFrame的外觀是什麼? ('scores.head(10)'應該就足夠了) –

+1

它在文件末尾附加'scores'數據幀,因爲這就是熊貓'to_csv'功能的工作原理。如果你想在原始CSV數據框中添加'scores'作爲新列,那麼你需要將csv讀入數據框,追加'scores'列,然後將其寫回到csv。 –

+0

'resultsFile'是5列的csv:'timestamp','value','aaa','bbb','label'。我希望第六名是'scores'數據框。我已驗證所有列的長度相同。 'scores'有一個列標題's'。 – BoltzmannBrain

回答

5

像什麼@aus_lacy已經建議,你只需要讀取CSV文件導入數據框架的第一個,連接兩個數據幀,並將其寫回csv文件:

認爲現有的數據幀稱爲df

df_csv = pd.read_csv(outputPath, 'your settings here') 

# provided that their lengths match 
df_csv['to new column'] = df['from single column'] 

df_csv.to_csv(outputPath, 'again your settings here') 

就是這樣。

+1

我試圖避免打開和閱讀所有的數據,但這是行得通的:) – BoltzmannBrain

+0

@ alavin89,你必須使用python嗎? – Anzel

+0

是的,還有熊貓。 – BoltzmannBrain