如何在 Python 中的数据框中的特定模式之前提取特定字母 n#s?
How do I extract a certain letter n#s before a specific pattern in a data frame in Python?
我在数据框中有一列列出了 DNA 序列,我想做以下两件事。下面是数据集的例子
d = [['ampC','tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcAtcgccaatgtaaatccggcccgcc'], ['yifL','acttcataaagagtcgctaaacgcttgcttttacgtcttctcctgcgatgatagaaagcaGaaagcgatgaactttacaggcaat'],['glyW','tcaaaagtggtgaaaaatatcgttgactcatcgcgccaggtaagtagaatgcaacgcatcGaacggcggcactgattgccagacg']]
df = pd.DataFrame(d, columns = ['gene','Sequence'])
gene
Sequence
ampC
tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcAtcgccaatgtaaatccggcccgcc
yifL
acttcataaagagtcgctaaacgcttgcttttacgtcttctcctgcgatgatagaaagcaGaaagcgatgaactttacaggcaat
glyW
tcaaaagtggtgaaaaatatcgttgactcatcgcgccaggtaagtagaatgcaacgcatcGaacggcggcactgattgccagacg
- 提取大写字母及其之前的所有内容。使用
str.extract(r"(.*?)[A-Z]+", expand=True)
我可以获得大写字母之前的所有内容,但我也需要帮助弄清楚如何获得大写字母。
我试图为 ampC 获取的示例:tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcA
- 如何提取大写字母前的第16个字母
我试图为以下 3 个基因获取的示例:
gene
letter
ampC
c
yifL
g
glyW
t
[c, g, t]
预先感谢您的所有帮助。抱歉,如果以前有人问过这样的问题,我找不到任何解决方案。
您的正则表达式几乎是您所需要的。只需将大写字母移动到组内即可。尝试:
df["substring"] = df["Sequence"].str.extract(r"(.*?[A-Z])")[0]
df["letter"] = df["Sequence"].str.extract(r"(.*?[A-Z])")[0].str[-17]
>>> df[["gene", "letter"]]
gene letter
0 ampC c
1 yifL g
2 glyW t
你可以试试:
df["SubSequence"] = df["Sequence"].str.extract(r'^(.*?[A-Z])')
df["letter"] = df["Sequence"].str.extract(r'^[acgt]*([acgt])[acgt]{15}[A-Z]')
我在数据框中有一列列出了 DNA 序列,我想做以下两件事。下面是数据集的例子
d = [['ampC','tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcAtcgccaatgtaaatccggcccgcc'], ['yifL','acttcataaagagtcgctaaacgcttgcttttacgtcttctcctgcgatgatagaaagcaGaaagcgatgaactttacaggcaat'],['glyW','tcaaaagtggtgaaaaatatcgttgactcatcgcgccaggtaagtagaatgcaacgcatcGaacggcggcactgattgccagacg']]
df = pd.DataFrame(d, columns = ['gene','Sequence'])
gene | Sequence |
---|---|
ampC | tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcAtcgccaatgtaaatccggcccgcc |
yifL | acttcataaagagtcgctaaacgcttgcttttacgtcttctcctgcgatgatagaaagcaGaaagcgatgaactttacaggcaat |
glyW | tcaaaagtggtgaaaaatatcgttgactcatcgcgccaggtaagtagaatgcaacgcatcGaacggcggcactgattgccagacg |
- 提取大写字母及其之前的所有内容。使用
str.extract(r"(.*?)[A-Z]+", expand=True)
我可以获得大写字母之前的所有内容,但我也需要帮助弄清楚如何获得大写字母。
我试图为 ampC 获取的示例:tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcA
- 如何提取大写字母前的第16个字母
我试图为以下 3 个基因获取的示例:
gene | letter |
---|---|
ampC | c |
yifL | g |
glyW | t |
[c, g, t]
预先感谢您的所有帮助。抱歉,如果以前有人问过这样的问题,我找不到任何解决方案。
您的正则表达式几乎是您所需要的。只需将大写字母移动到组内即可。尝试:
df["substring"] = df["Sequence"].str.extract(r"(.*?[A-Z])")[0]
df["letter"] = df["Sequence"].str.extract(r"(.*?[A-Z])")[0].str[-17]
>>> df[["gene", "letter"]]
gene letter
0 ampC c
1 yifL g
2 glyW t
你可以试试:
df["SubSequence"] = df["Sequence"].str.extract(r'^(.*?[A-Z])')
df["letter"] = df["Sequence"].str.extract(r'^[acgt]*([acgt])[acgt]{15}[A-Z]')