Как выбрать прописные слова из столбца и разделить на новый столбец? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть набор данных генов и лекарств в одном столбце, выглядит так:

Molecules
3-nitrotyrosine
4-phenylbutyric acid
5-fluorouracil/leucovorin/oxaliplatin
5-hydroxytryptamine
ABCB4
ABCC8
ABCC9
ABCF2
ABHD4

Разброс генов и лекарств в столбце является случайным, поэтому нет точного разделения, которое я могу сделать,Я пытаюсь удалить гены и поместить их в новый столбец, мне интересно, могу ли я использовать isupper (), чтобы выбрать гены и переместить их в новый столбец, хотя я знаю, что это работает только со строками.Есть ли способ выбрать строки с заглавными буквами, чтобы поместить в новый столбец?Любое руководство будет оценено.

Expected Output:
  Column 1                                Column 2
3-nitrotyrosine                           ABCB4
4-phenylbutyric acid                      ABCC8
5-fluorouracil/leucovorin/oxaliplatin     ABCC9
5-hydroxytryptamine                       ABCF2

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Как уже упоминалось, разделять верхний регистр просто:

df.loc[df['Molecules'].str.isupper()]

  Molecules
5     ABCB4
6     ABCC8
7     ABCC9
8     ABCF2
9     ABHD4

df.loc[df['Molecules'].str.isupper() == False]

                               Molecules
0                        3-nitrotyrosine
1                        4-phenylbutyric
2                                   acid
3  5-fluorouracil/leucovorin/oxaliplatin
4                    5-hydroxytryptamine

Однако, как вы хотите сопоставить строки, неясно, пока вы не сможете предоставить дополнительную информацию.

0 голосов
/ 12 февраля 2019

Считайте ваш файл в список:

with open('test.txt', 'r') as f:
    lines = [line.strip() for line in f]

Удалите все заглавные буквы следующим образом:

mols = [x for x in lines if x.upper() != x]
genes = [x for x in lines if x.upper() == x]

Результат:

mols
['3-nitrotyrosine', '4-phenylbutyric acid', 
 '5-fluorouracil/leucovorin/oxaliplatin', '5-hydroxytryptamine']
genes
['ABCB4', 'ABCC8', 'ABCC9', 'ABCF2', 'ABHD4']
...