首页 文章

pandas DataFrame条件字符串拆分

提问于
浏览
0

我的DataFrame中有一列流感病毒名称 . 以下是目前名称格式的代表性样本:

  • (A / Egypt / 84/2001(H1N2))

  • A / Brazil / 1759/2004(H3N2)

  • A / Argentina / 126/2004

我只对从菌株名称中取出A / COUNTRY / NUMBER / YEAR感兴趣,例如 A/Brazil/1759/2004 . 我试过做:

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

但是,如果我尝试访问 .str[0] ,那么我会错过案例#1 . 如果我做 .str[1] ,我会错过案例2和3 .

是否有适用于所有三种情况的解决方案?或者有没有办法在字符串拆分中应用条件,而不迭代数据框中的每一行?

1 回答

  • 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))
    

    此代码适用于此处拼写的特定情况,因为诀窍是隔离的"strain name"是在通过左括号(“ ( ”)值分割后的最长字符串 .

相关问题