如何在 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
  1. 提取大写字母及其之前的所有内容。使用 str.extract(r"(.*?)[A-Z]+", expand=True) 我可以获得大写字母之前的所有内容,但我也需要帮助弄清楚如何获得大写字母。

我试图为 ampC 获取的示例:tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcA

  1. 如何提取大写字母前的第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]')