データロギングシステムの1000個のファイルを含むディレクトリがあり、各ファイルには最大40,000行以上を含めることができます。問題は、時々1つ以上のセンサーからデータが記録されず、失われることです。
ファイル1:
A,B,C,D,F
10,20,10,20,5
ファイル2:
B,C,D,E,F
20,10,20,5,10
ファイル3:
D,E,F
10,30,20
必要な結果は、すべてのファイルを1つのヘッダーにマージ/接続することです。入力ファイルに列がない場合(破損したセンサーのため)、そのセクションはNULL値に置き換えられます。
A,B,C,D,E,F
10,20,10,20,,5
,20,10,20,5,10
,,,10,30,20
最後の列Fは日付/時刻スタンプなので、常に存在します。
この答えを見つけましたが、すべてのヘッダー/列がすべてのファイルで同じであるとします。
ヘッダーの順序が異なる複数の大きなCSVファイルを貼り付ける
私もこの問題を発見しました複数のCSVファイルをマージして、一致する列と一致しない列を取得します。しかし、私が利用できるほど答えは完全ではありません。
ありがとう
ベストアンサー1
非常にきれいでシンプルな代替ツールを試してみたい場合(https://github.com/johnkerl/miller)、入力CSVファイルを含むフォルダから始めて、このコマンドを使用します。
mlr --csv unsparsify *.csv >out.csv
あなたはやる
A,B,C,D,F,E
10,20,10,20,5,
,20,10,20,10,5
,,,10,20,30
F a を終了するには、次のコマンドを使用します。
mlr --csv unsparsify then reorder -e -f F *.csv
ファイルが多い場合は、次の2つの手順で実行できます。
mlr --icsv cat *.csv >tmp.txt
mlr --ocsv unsparsify tmp.txt >out.csv