2013-10-17 81 views
6

標題中的概率。例如:將數據框保存並加載到csv結果的未命名列中

x=[('a','a','c') for i in range(5)] 
df = DataFrame(x,columns=['col1','col2','col3']) 
df.to_csv('test.csv') 
df1 = read_csv('test.csv') 

    Unnamed: 0 col1 col2 col3 
0   0 a a c 
1   1 a a c 
2   2 a a c 
3   3 a a c 
4   4 a a c 

原因似乎是,當保存一個數據幀時,索引列也被寫入,並且頭中沒有名稱。那麼當你再次加載csv時,它將作爲未命名的列加載索引列。這是一個錯誤?我該如何避免使用索引編寫csv,或者在閱讀時刪除未命名的列?

回答

7

您可以通過indexindex_labelparameters of to_csv刪除行標籤。

+0

這是我正在尋找,因爲它避免了創建問題,而不是處理後綴。 – idoda

0

您可以使用cols參數明確指定要寫入哪些列。

+0

這不太好,因爲我可能有許多,很多列..我可以做的雖然是df [df.columns] .to_csv()。這不會是一個大麻煩.. – idoda

4

這些不是對稱的,因爲定位導致csv格式存在歧義。你需要指定讀回

In [1]: x=[('a','a','c') for i in range(5)] 

In [2]: df = DataFrame(x,columns=['col1','col2','col3']) 

In [3]: df.to_csv('test.csv') 

In [4]: !cat test.csv 
,col1,col2,col3 
0,a,a,c 
1,a,a,c 
2,a,a,c 
3,a,a,c 
4,a,a,c 

In [5]: pd.read_csv('test.csv',index_col=0) 
Out[5]: 
    col1 col2 col3 
0 a a c 
1 a a c 
2 a a c 
3 a a c 
4 a a c 

這看起來非常類似於上述的index_col,所以是「富」的列或索引?

In [6]: df.index.name = 'foo' 

In [7]: df.to_csv('test.csv') 

In [8]: !cat test.csv 
foo,col1,col2,col3 
0,a,a,c 
1,a,a,c 
2,a,a,c 
3,a,a,c 
4,a,a,c 
+0

謝謝,我認爲解決方案很簡單:) – idoda

+0

它是,只需指定''index_col = 0'' – Jeff

0

那S如何使用指數 df.to_csv('test.csv', index_label=False) 但對我來說,當我試圖提交Kaggle它返回錯誤「ERROR:記錄1有3列,但預計2」,所以我解決它使用this code

+0

你應該考慮添加一些解釋性文字到你的答案,以提高其質量。 – user2314737

相關問題