4

ファイル内の空の列を削除する最速の方法は何ですか? ファイルの例を以下に示します。

python 'pandas' パッケージを使用しましたが、2 GB のファイルをロードするのに時間がかかりすぎます (約 10 分後に答えが得られなかったので、多くのファイルに対してこれを行う必要があるため終了します)。

df = read_table(inFileName, sep="\t")
df = df.dropna(axis=1,how='all') #remove columns

aaa bbb ccc ddd eee
1   a       c   
2   s       d   
3   d           
    f       d   
4   g       d   
5   h       e   

どのフィールドが空かは事前にわかりません。「パンダ」の0.9.1バージョンを使用しています

pkg_resources.get_distribution("パンダ").バージョン '0.9.1'

4

1 に答える 1

2

結局、これらの列を本当に削除したくないことがわかったと思います。しかし、これは でそれを行う方法ですgawk

awk -F "\t" 'ARGIND==1{
    for(i=1;i<=NF;i++)n[i]+=$i!=""
}ARGIND==2{
    if(!ok){for(i in n)if(!n[i])delete n[i];asorti(n);ok=1}
    for(i in n)printf("%s\t",$n[i]);printf("\n")
}' input.txt{,} > output.txt

これは、ファイルを 2 回通過させることで機能します。1 つ目は各列のエントリ数をカウントし、2 つ目は少なくとも 1 つのヒットがあった列のみを出力します。サンプルファイルの場合(タブ区切りの列を想定し、aaa bbbなどのヘッダーを削除すると、結果が得られます

1   a   c   
2   s   d   
3   d       
    f   d   
4   g   d   
5   h   e

しかし、まあ、2 GB のテキスト ファイルです。それを保存するためのより適切なバイナリ形式はありませんか?

于 2013-02-22T21:03:41.657 に答える