我有一个数据框,例如:
df.columns = ["qseqid", "sseqid", "pident", "length", "mismatch", "gapopen","qstart", "qend", "sstart", "send", "evalue", "bitscore"]
最终的想法是创建一个名为strand
的新列
,并且如果start中的值大于结尾,则在相应的行中添加一个+,并且如果start小于end则添加一个-
。
这是我的代码:
for a, b in zip(df["qstart"],df["qend"]):
if a > b:
df['e'] = '+'
elif a < b:
df.['e'] = '-'
但是即使-
中的值高于qstart
qend
所表示的列链中。
谢谢您的帮助
df:
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore
scaffold_1 test 25.5 337 166 9 2 20 27 310 1.0e-16 94.0
scaffold_1 tes2 27.0 278 163 9 500 20 222 487 1.e-16 94.0
scaffold_1 tes4 35.5 166 93 2 3 10 63 227 2.e-15 89.7
我应该得到的休息:
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore strand
scaffold_1 test 25.5 337 166 9 2 20 27 310 1.0e-16 94.0 +
scaffold_1 tes2 27.0 278 163 9 500 20 222 487 1.e-16 94.0 -
scaffold_1 tes4 35.5 166 93 2 3 10 63 227 2.e-15 89.7 +
其他部分:
0
我有一个df,例如:
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore
scaffold_1 test 25.5 337 166 9 2 20 27 310 1.0e-16 94.0
scaffold_1 tes2 27.0 278 163 9 500 20 222 487 1.e-16 94.0
scaffold_1 tes4 35.5 166 93 2 3 10 63 227 2.e-15 89.7
,如果df.qstart
,我想更改ds.qend
和df.qstart>df.qstart
中的值
在这里是:
qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore
scaffold_1 test 25.5 337 166 9 2 20 27 310 1.0e-16 94.0
scaffold_1 tes2 27.0 278 163 9 20 500 222 487 1.e-16 94.0
scaffold_1 tes4 35.5 166 93 2 3 10 63 227 2.e-15 89.7
您可能会发现500取代了20,谢谢您的帮助
答案 0 :(得分:1)
您可以使用np.where
df['e']=np.where(df["qstart"]>df["qend"],'+','-')