2015-12-04 30 views
50

私はcsvファイルをpandasに読み込んでいます。このCSVファイルは4つの列といくつかの行を指定しますが、追加するヘッダー行はありません。pandas DataFrameにヘッダ行を追加するには

Cov = pd.read_csv("path/to/file.txt", sep='\t') 
Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"]) 
Frame.to_csv("path/to/file.txt", sep='\t') 

をしかし、私は、コードを適用すると、私は次のエラーを取得する:私は、次のことをしようとしている

ValueError: Shape of passed values is (1, 1), indices imply (4, 1) 

エラーが正確に何を意味するのでしょうか?そして、私のcsvファイル/ pandas dfにヘッダー行を追加するためのPythonのクリーンな方法は何でしょうか?

答えて

84

あなたが期待するよう、以下の行は動作しません​​

names : array-like, default None List of column names to use. If file contains no header row, then you should explicitly pass header=None

Cov = pd.read_csv("path/to/file.txt", sep='\t', 
        names = ["Sequence", "Start", "End", "Coverage"]) 

に直接namesを使用することができます。 Covはすでにデータフレームです。ファイルから読み込まれるときに実際に4つの列があると仮定します。

Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"]) 
+4

あなたは笑います。私は実際にこれを試しましたが、名前の周りに角括弧を入れなければならないことに気づいていませんでした。論理的に振り返ってみましょう。ありがとうございました! –

+0

心配する必要はありません。私も彼らの罪を犯しています。 – Leb

41

また、あなたがheader=NoneでCSVし、その後df.columnsでそれを追加読むことができる:

Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None) 
Cov.columns = ["Sequence", "Start", "End", "Coverage"] 
1
col_Names=["Sequence", "Start", "End", "Coverage"] 
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names) 

はちょうど私が知っている[も明らかでそれを確認し、これを行った、uがそれを知っています。しかし、まだ...

my_CSV_File.head() 

は、 pd.DataFrameの最初のパラメータは多次元 numpy配列になりますあなたは、単に Cov.values[Cov]を変更することができます乾杯

+0

'{} 'ボタンでコードを書式化してください。インデントは重要です。 – MrT

0

はあなたのコードを修正するには...それがお役に立てば幸い:

Cov = pd.read_csv("path/to/file.txt", sep='\t') 
Frame=pd.DataFrame(Cov.values, columns = ["Sequence", "Start", "End", "Coverage"]) 
Frame.to_csv("path/to/file.txt", sep='\t') 

しかし、賢い解決策はまだheader=Nonenames=columns_listpd.read_excelを使用しています。

関連する問題