ヘッダー行をpandas DataFrameに追加する方法


165

CSVファイルをに読み込んでいますpandas。このcsvファイルは4つの列といくつかの行で構成されていますが、追加したいヘッダー行がありません。私は以下を試しています:

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ファイル/パンダdfに追加するPythonのきれいな方法は何でしょうか?


ここにあなたの質問の異なる解釈があります:マルチインデックスを作成するために既存のデータフレームに別のヘッダーを追加します。
cs95

回答:


257

names直接使用できますread_csv

names:array-like、default None使用する列名のリスト。ファイルにヘッダー行が含まれていない場合は、header = Noneを明示的に渡す必要があります

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

9
あなたは笑うでしょう。私は実際にこれを試しましたが、名前を角括弧で囲む必要があることを知りませんでした。これは論理的に振り返ります。ありがとうございました!
sequence_hard

心配する必要はありません。私たちは皆、これらの愚かな間違いを犯しました。私も彼らの罪を犯しています。
レブ

@レブ、私はまったく同じ問題があり、私はあなたの解決策を試しました。テーブルのヘッダーを取得しましたが、最初の行も同じヘッダー名に置き換えられました。私は今何をしていますか?
007mrviper

データに列を追加しNaNます。すべての属性が含まれています。それは私のセパレータが何もないところだからです。
SalahAdDin

127

または、csvを読み取ってheader=Noneから追加することもできますdf.columns

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

15
col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

これを行ったら、それを確認してください[まあ、明らかに私は知っています。それでも...

my_CSV_File.head()

それが役に立てば幸い...乾杯


{}ボタンでコードをフォーマットしてください。インデントが重要です。
T氏

7

コードを修正するには、単純にに変更[Cov]Cov.valuesます。最初のパラメーターはpd.DataFrame多次元numpy配列になります。

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')

しかし、最も賢いソリューションはpd.read_excelheader=Noneとでの使用names=columns_listです。


columns_listを指定するときに、選択した列のデフォルト値を追加できますか?
Chintan Gotecha
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.