Python 根据熊猫图案切换两列
我实际上有一个数据帧,例如:Python 根据熊猫图案切换两列,python,pandas,parsing,Python,Pandas,Parsing,我实际上有一个数据帧,例如: seq1_id seq2_id dN length1 length2 GC1 GC2 g13600.t1_0042_0042 g66097.t1_0035_0035 0.10 45 67 0.78 0.67 g1464.t1_0035_0042 g45594.t1_0042_0035 0.67 56 34 0.65 0.87 g3474
seq1_id seq2_id dN length1 length2 GC1 GC2
g13600.t1_0042_0042 g66097.t1_0035_0035 0.10 45 67 0.78 0.67
g1464.t1_0035_0042 g45594.t1_0042_0035 0.67 56 34 0.65 0.87
g34744.t1_0042_0035 g50055.t1_0035_0035 0.08 34 76 0.75 0.45
g12096.t1_0035_0042 g34020.t1_0042_0035 0.43 31 54 0.89 0.76
我想改变我的列的顺序,事实上,在第一列上只有基因名,第一个_编号为_0035,在另一列中,第一个_编号为0042,这里给出:
seq1_id seq2_id dN length1 length2 GC1 GC2
g66097.t1_0035_0035 g13600.t1_0042_0042 0.10 45 67 0.78 0.67
g1464.t1_0035_0042 g45594.t1_0042_0035 0.67 34 56 0.87 0.65
g50055.t1_0035_0035 g34744.t1_0042_0035 0.08 34 76 0.75 0.45
g12096.t1_0035_0042 g34020.t1_0042_0035 0.43 54 31 0.76 0.89
正如你所看到的,在第一列中,我只得到了以0035开头的基因名
当存在swip时,列长度1和2以及GC1和2也会移动
感谢您的帮助您可以使用
np。其中
,如下所示:
import numpy as np
df.length1, df.legth2 = np.where(df.seq1_id.str.contains('t1_0035'), df.length1, df.legth2), np.where(df.seq1_id.str.contains('t1_0042'), df.length1, df.legth2)
df.seq1_id, df.seq2_id = np.where(df.seq1_id.str.contains('t1_0035'), df.seq1_id, df.seq2_id), np.where(df.seq1_id.str.contains('t1_0042'), df.seq1_id, df.seq2_id)
>>> df
seq1_id seq2_id dN
0 g66097.t1_0035_0035 g13600.t1_0042_0042 0.10
1 g1464.t1_0035_0042 g45594.t1_0042_0035 0.67
2 g50055.t1_0035_0035 g34744.t1_0042_0035 0.08
3 g12096.t1_0035_0042 g34020.t1_0042_0035 0.43
编辑您的后续问题:嗨,我不确定我的帖子是否真的很清楚,事实上我需要在“seq1_id”列中输入第一个基因名,其第一个基因号等于_0035,在“seq2_id”列中输入第一个基因名等于_0042,在我的示例中,我只需要切换第1行和第3行。如果你看一下我想要的结果,在第一列中,我所有的基因名称的第一个编号都是_0035,这一列也是一样的2@Benjamin现在试一试?谢谢,它很管用,但它实际上引发了另一个问题,我还需要切换其他列,我将它添加到了我的第一个示例中。实际上,我还有另一列对应于GC组件的长度,它们也必须切换。谢谢你的帮助help@Benjamin我更新了答案,但在得到答案后再添加其他问题并不是一个好形式。