【发布时间】:2021-07-25 18:04:46
【问题描述】:
我需要搜索一列的每个值,与另一列的所有条目进行比较,如果满足某些条件,则打印。我正在使用下面的python代码,它可以工作,但缺点是两列都有数万个条目,所以速度很慢。有没有更有效的方法来做到这一点?
for i in df1.index:
for j in df2['pdb']:
if df1['pdb'][i] == df2['pdb'][j]:
if df1['res1'][i] >= df2['start'][j] and df1['res2'][i] <= df2['end'][j]:
print(df1['pdb'][i], df2['PFAM_ACC'][j])
例子:
df1 =
pdb res1 res2
4xhfA 76 83
4xhfA 126 133
2mx1A 179 186
3s8lA 111 118
4ucmA 115 122
1pigA 119 126
4mavA 263 270
4mavA 289 296
3sbrA 101 108
3sbrA 148 155
3sbrA 158 165
3sbrA 222 229
3sbrA 394 401
5zeaA 83 90
5zeaC 562 569
5zeaD 32 39
5zeaD 89 96
5zeaG 277 284
df2 =
pdb start end PFAM_ACC
4xhfA 140 236 PF04205
1pigA 61 332 PF00128
1pigA 409 493 PF02806
3sbrA 171 241 PF18793
3sbrA 424 494 PF18764
3sbrA 558 635 PF00116
5zeaA 13 75 PF02874
5zeaC 13 75 PF02874
5zeaD 15 81 PF02874
5zeaG 13 75 PF02874
我想得到输出:
1pigA PF00128
3sbrA PF18793
5zeaD PF02874
我希望现在更清楚了。
如果您有任何建议,请告诉我
【问题讨论】:
-
您能否编辑您的问题并将示例(小)输入和预期输出(以文本形式 - 以便我们复制和粘贴)放在那里?
-
谢谢 Andrej,我已经编辑过了。我希望现在很清楚。
标签: python dataframe loops search iteration