[英]pandas DataFrame conditional string split
我的DataFrame中有一列流感病毒名稱。 這是現有名稱格式的代表性示例:
我只想從菌株名稱中取出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.