![](/img/trans.png)
[英]How to extract entire rows from pandas data frame, if a column's string value contains a specific pattern
[英]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 |
str.extract(r"(.*?)[AZ]+", expand=True)
我可以得到大寫字母之前的所有內容,但我也需要幫助弄清楚如何獲得大寫字母。我要為 ampC 獲取的示例:tacggtctggctgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcA
我正在嘗試獲取以下 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.