Панды, объединяющие столбцы обратной строкой комплимента - PullRequest
0 голосов
/ 13 сентября 2018

Так что я застрял на том, как подойти к технике манипулирования данными в пандах.У меня есть пример данных ниже с суммой 25 отсчетов в каждой строке.Я хотел бы объединить имена столбцов с помощью обратной последовательности комплимента.

   AA CC GG AT TT

    4  7  0  9  5
    3  8  5  5  2
    8  6  2  8  1

Столбцы «AA» и «TT» являются обратными комплиментами друг друга, также как «CC» и «GG»

   AA/TT CC/GG AT 

    9     7     9
    5     13    5
    9     8     8

Как сопоставить обратный комплиментимя столбца и объединить его с именем другого столбца.

Примечание. У меня уже есть функция для поиска обратного дополнения строки

1 Ответ

0 голосов
/ 13 сентября 2018

Я бы предложил просто создать новый кадр, используя pd.concat:

new_df = pd.concat([df[['AA', 'TT']].sum(1).rename('AA/TT'),
                    df[['CC', 'GG']].sum(1).rename('CC/GG'),
                    df['AT']], axis=1)

>>> new_df
   AA/TT  CC/GG  AT
0      9      7   9
1      5     13   5
2      9      8   8

В общем, вы могли бы сделать это в понимании списка. Учитывая обратные комплименты:

reverse_compliments = [['AA','TT'], ['CC','GG']]

Найдите в исходных столбцах данных те значения, которые не имеют обратного комплимента (здесь может быть лучший способ, но это работает):

reverse_compliments.append(df.columns.difference(
    pd.np.array(reverse_compliments)
    .flatten()))

И использовать pd.concat с пониманием списка:

new_df = pd.concat([df[x].sum(1).rename('/'.join(x)) for x in reverse_compliments],
                   axis=1)

>>> new_df
   AA/TT  CC/GG  AT
0      9      7   9
1      5     13   5
2      9      8   8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...