当模式出现在另一列中时,更改两列的值

时间:2019-02-04 09:57:09

标签: python pandas

我有一个表格,例如:

seqnames start end  strand
1 scaffold_0 1 50 -
2 scaffold_0 30 120 +
3 scaffold_0 60 400 -
4 scaffold_0 100 300 +

我只是想在每一行中使用模式“-”替换结束和开始之间的值。

因此它应该得到:

seqnames start end  strand
1 scaffold_0 50 1 -
2 scaffold_0 30 120 +
3 scaffold_0 400 60 -
4 scaffold_0 100 300 +

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以创建一个掩码并在df.loc[]下调用它,然后反向分配值:

l=df['strand'].eq("-")
df.loc[l,['start','end']] = df.loc[l,['end','start']].values
print(df)

     seqnames  start  end strand
1  scaffold_0     50    1      -
2  scaffold_0     30  120      +
3  scaffold_0    400   60      -
4  scaffold_0    100  300      +