如何从一列中选择大写单词并分成一个新列?

时间:2019-02-12 16:00:52

标签: python uppercase

我在1列中都有一个基因和药物的数据集,看起来像这样:

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 :(得分:1)

将文件读入列表:

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']

答案 1 :(得分:0)

如上所述,分隔大写很简单:

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

但是直到您能够提供其他详细信息时,您仍然不清楚如何匹配行。