【发布时间】:2020-11-16 13:05:56
【问题描述】:
此逻辑将应用于 BIG 数据,我确实需要优化速度并尽可能减少 RAM 使用量,并且我已尽我所能。
df = pd.DataFrame([['chr1',33329,17,'''33)'6'4?1&AB=?+..''','''X%&=E&!%,0("&"Y&!'''],
['chr1',33330,15,'''6+'/7=1@><C1*'*''','''X%=E!%,("&"Y&&!'''],
['chr1',33331,13,'''2*3A@/9@CC3--''','''X%E!%,("&"Y&!'''],
['chr1',33332,16,'''4**(,:3)+7-@<(0-''','''X%&E&!%,0("&"Y&!'''],
['chr1',33333,14,'''66(/C=*42A:.&*''','''X%=&!%0("&"&&!''']],
columns = ['chrom','pos','depth','phred','map'])
df['phred2'] = df.phred.apply(lambda x: sum(map(lambda x: x-33, map(ord, x))))
df['phred2'] = df.phred2/df.phred.str.len()
df.drop(columns=['phred'], inplace=True)
df['map2'] = df.map.apply(lambda x: sum(map(ord, x)))
df['map2'] = df.map2/df.map.str.len()
df.drop(columns=['map'], inplace=True)
df
chrom pos depth phred2 map2
0 chr1 33329 17 18.000000 47.000000
1 chr1 33330 15 18.533333 47.533333
2 chr1 33331 13 22.000000 47.230769
3 chr1 33332 16 15.125000 46.125000
4 chr1 33333 14 18.142857 42.642857
这个答案是我需要的。我只需要知道是否有更好/更快的方法。
谢谢!
【问题讨论】:
-
我能得到一些关于为什么这被否决的反馈吗?我在这里尽力而为,似乎有点苛刻。
标签: python-3.x pandas optimization apply bioinformatics