2017-10-11 8 views
-1

巨大なCSVファイルチャンクをチャンクで読み込んで同じ方法でチャンクに書き込む機能を次に示します。Python Pandas:ヘッダー行を読み飛ばすが、それを保存して書き込み時に追加する

は、私は何をしたいです:ヘッダ行ですが、それを維持し、ヘッダーやヘッダー行としてそれを後で追加最初の行を読ん

スキップ。私はおそらく、ヘッダーを抽出し、スタックオーバーフロー上のコードの一部を見ましたが、私は

to_sql
def csv_to_sqlite(input_file_name, output_db, output_db_table_name, size_of_chunk): 
    number_of_lines = sum(1 for row in (open(input_file_name))) 

    for eachRow in range(0, number_of_lines, size_of_chunk): 

     df = pd.read_csv(input_file_name, 
         header=None, 
         nrows=size_of_chunk, 
         skiprows=eachRow, 
         low_memory=False, 
         error_bad_lines=False) 

     # new_header = df.iloc[0] 
     # df = df[1:] 
     # df.columns = new_header 

     df = df.drop_duplicates(keep='last') 
     df = df.apply(lambda x: x.astype(str).str.lower()) 

     df.to_sql(output_db_table_name, output_db, if_exists='append', 
        index=False, 
        chunksize=size_of_chunk) 
+0

ssqlにcsvヘッダーを書き込むことは何を意味しますか?あなたの質問を明確にすることはできますか? – pvg

+0

ここで何をしようとしていますか?塊の中に重複を落とすことは、塊の中に重複がある場合には役立ちません...例えば:DBにデータを一括して入れないで、そこにDISTINCTするのはなぜですか? –

+0

もし私がそれを知っていれば、私はちょうどPythonを学び始めました。どうすればいいのか教えてください。 – Wcan

答えて

-2

を使用してデータを書き込む際に車輪を再発明する必要はありません、それを再度追加する方法がわからない - 'chunksize' parameterを使用します:

for df in pd.read_csv(filename, ..., chunksize=size_of_chunk): 
    #process chunk here 
+0

これはまったく問題を解決してくれないようです。 – pvg

+0

@pvg、はい、そうです。もしあなたがドキュメントを読んでいれば、 'chunksize'パラメータを使ってその問題を解決することがわかります – MaxU

+1

@pvgこれは、OPが何をしようとしているのかを処理します(OPは一度ファイルを読み込んで行数を取得します。 (これは多くのチャンクが必要です) - これは、その部分に対処するためのはるかに理想的で効率的なソリューションです(返されるデータフレームには同じ列の名前が付いているので、ヘッダーについて心配する必要はありません) –

関連する問題