python 按列名提取多列
本帖最后由 小风0000 于 2016-08-16 05:07 编辑dat='''
SNPID A702Y A704Y A706Y A708Y A710Y
ARS-BFGL-BAC-10172 CC CC CC CC CC
ARS-BFGL-BAC-1020 CC CC CT CC CC
'''
names=["SNPID","A702Y","A710Y"]由于数据比较大,有4万行,7000列,要提出800列的数据,大家有什么好的办法吗?
script,originalFN,targetFN = sys.argv
originalInds = open(originalFN).readline().strip().split()
targetInds =
targetF=open("targetInds.txt","w")
#find index
idx = [ originalInds.index(ind) for ind in targetInds if ind in originalInds ]
idx.insert(0,0)
#output
for num,line in enumerate(open(originalFN)):
print num
tmp = for i in idx]
targetF.write(" ".join(tmp)+"\n")
targetF.close()
这是我写的代码,先取出列名的下标,再在大文件一行行弄出来,有点慢,求助!
你可以用pandas库,都有封装 回复 2# 吃瓜群众
不行啊,直接报错,out of memory。文件太大了,有没有什么更好的办法?
回复 3# 小风0000
你可以把大文件分成小文件处理,最后再归并。
回复 4# 吃瓜群众
不应该啊,我用python就想着处理大文件方便,要是分成小文件,我还不如用R处理。
肯定有更简单,高效地写法吧!
对于这样的情况,一定要用到mmap才行 #output
num = 0
for line in open(originalFN).xreadlines() :
num += 1
print num
tmp = for i in idx]
targetF.write(" ".join(tmp)+"\n")
页:
[1]