更改两个时的值模式出现在另一列

问题描述 投票:1回答:1

我有一个表,如:

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 +

谢谢您的帮助。

python pandas
1个回答
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      +
© www.soinside.com 2019 - 2024. All rights reserved.