我的DataFrame中有一列流感病毒名称。以下是现有名称格式的代表性样本:
我只想从菌株名称中取出A / COUNTRY / NUMBER / YEAR,例如的 A /巴西/二千○四分之一千七百五十九即可。我试过了:
df['Strain Name'] = df['Original Name'].str.split("(")
但是,如果我尝试访问.str[0]
,那么我会错过案例#1。如果我.str[1]
,我会错过案例2和3。
是否有适用于所有三种情况的解决方案?或者是否有某种方法在字符串拆分中应用条件,而不迭代数据框中的每一行?
答案 0 :(得分:1)
所以,根据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))
此代码适用于此处拼写的特定情况,因为诀窍是隔离的“应变名称”是用开头括号(“(
”)值分割后的最长字符串。