我使用了python‘pandas’软件包,但它耗费了太多时间(大约10分钟后我没有得到答案,因此我不得不为许多文件执行此操作)来加载我的2 GB文件.
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版本的’pandas’
pkg_resources.get_distribution(“pandas”).version
‘0.9.1’
解决方法:
好吧,我猜你发现你真的不想删除那些列.但是你可以在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
这通过在文件中进行两次传递来实现.第一个计算每列中的条目数,而第二个仅打印那些至少有一个匹配的列.对于您的示例文件(假设以制表符分隔的列,并删除aaa bbb等标题,我得到结果
1 a c
2 s d
3 d
f d
4 g d
5 h e
但是,2 GB的文本文件.你有没有更合适的二进制格式来存储它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。