簡體   English   中英

如何在 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'])
基因 序列
放大器 tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcAtcgccaatgtaaatccggcccgcc
yifL acttcataaagagtcgctaaacgcttgcttttacgtcttctcctgcgatgatagaaagcaGaaagcgatgaactttacaggcaat
glyW tcaaaagtggtgaaaaatatcgttgactcatcgcgccaggtaagtagaatgcaacgcatcGaacggcggcactgattgccagacg
  1. 提取大寫字母及其前面的所有內容。 使用str.extract(r"(.*?)[AZ]+", expand=True)我可以得到大寫字母之前的所有內容,但我也需要幫助弄清楚如何獲得大寫字母。

我要為 ampC 獲取的示例:tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcA

  1. 如何提取大寫字母前的第 16 個字母。

我正在嘗試獲取以下 3 個基因的示例:

基因
放大器 C
yifL G
glyW

[c,g,t]

你可以試試:

df["SubSequence"] = df["Sequence"].str.extract(r'^(.*?[A-Z])')
df["letter"] = df["Sequence"].str.extract(r'^[acgt]*([acgt])[acgt]{15}[A-Z]')

您的正則表達式幾乎就是您所需要的。 只需在組內移動大寫字母。 嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM