
友達!私は巨大なcsvファイルを持っており、「data.status」という列が「Full」のようなヘッダーを持つ行を抽出し、空の列を削除して別のcsvファイルに書き込む必要があります。 grep |を使ってこれを達成できますか? sed |え?答えてくれてありがとう!
編集1.約60,000個のjsonファイルを平面化し、そのファイルのデータをcsvに作成してこのcsvを作成しました。ヘッダーの実際の数がわからず、開くこともできません。 (csvファイルサイズは約1.5GBです。)しかし、空のフィールドがたくさんあるので、それを削除して読みやすくしたいと思います。たとえば、csvがあります。
日付、ステータス、日付、開始、日付、終了、日付、プロジェクト
失敗、21-03-15、25-03-15、some_item
完了,,,,項目2
出力は次のようになります。
日付、ステータス、日付、プロジェクト
完了、プロジェクト2
答え1
ハッキングにはgrep / sed / awkを使用できますが、CSVパーサーを実装するのは簡単ではないため、高速ハッキングにのみ使用することをお勧めします(たとえば、さまざまな特殊エスケープ/引用シナリオを考慮する必要があります)。
これを行うには、Python stdlibで提供されているような実際の完全なCSVパーサーを使用することをお勧めします。
import csv
with open('your.csv') as csvfile:
reader = csv.DictReader(csvfile)
kept_rows = (row for row in reader if row['data.status'] == 'complete')
その後、次を使用して新しい行を作成できます。DictWriter
。