Переключите два столбца в зависимости от шаблона с пандами - PullRequest
0 голосов
/ 12 мая 2018

У меня на самом деле есть датафрейм такой:

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

и я хотел бы изменить порядок моих столбцов, фактически получим в первом столбце только имя гена, в котором первый _number равен _0035, а во втором - первый _number 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 и когда есть пролистывание, столбцы длины 1 и 2 и GC1 и 2 тоже перемещаются.

спасибо за вашу помощь

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете использовать np.where, например:

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

Изменить на свой следующий вопрос:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...