簡體   English   中英

pandas DataFrame條件字符串拆分

[英]pandas DataFrame conditional string split

我的DataFrame中有一列流感病毒名稱。 這是現有名稱格式的代表性示例:

  1. (A /埃及/二千○一分之八十四(H1N2))
  2. A /巴西/二千○四分之一千七百五十九(H3N2)
  3. A /阿根廷/二千○四分之一百二十六

我只想從菌株名稱中取出A / COUNTRY / NUMBER / YEAR,例如A / Brazil / 1759/2004 我試着做:

df['Strain Name'] = df['Original Name'].str.split("(")

但是,如果我嘗試訪問.str[0] ,那么我會錯過第一種情況。 如果我執行.str[1].str[1]錯過情況2和3。

是否有適用於所有三種情況的解決方案? 還是有某種方法可以在字符串拆分中應用條件,而無需遍歷數據幀中的每一行?

因此,根據EdChum的建議,我將在此處發布答案。

解決此問題所需的最小數據幀:

Index    Strain Name               Year
0        (A/Egypt/84/2001(H1N2))   2001
1        A/Brazil/1759/2004(H3N2)  2004
2        A/Argentina/126/2004      2004

僅獲取菌株名稱的代碼,不帶括號或括號內的其他任何內容:

df['Strain Name'] = df['Strain Name'].str.split('(').apply(lambda x: max(x, key=len))

該代碼適用於此處拼寫的特殊情況,因為訣竅是隔離株的“菌株名稱”是除以開括號(“ ( ”)值之后的最長字符串。

暫無
暫無

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

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