2013-10-17 8 views
6

が表示されます。 exaple:データフレームを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形式にあいまいさがあるため、対称ではありません。あなたはとても「fooが」列またはインデックスで、リードバック

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を指定する必要がありますか?

私はそれがリターンエラーですKaggleし提出しようとしたとき、インデックス df.to_csv('test.csv', index_label=False) しかし、私のために使用する方法だ
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

「ERROR:レコード1は、3列があったが、2を期待」ので、私はそれがthis codeを使用して解決しました。

+0

品質を向上させるためにあなたの答えに説明テキストを追加することを検討すべきである。 – user2314737

関連する問題