pandas DataFrame条件字符串拆分

时间:2014-10-20 14:10:25

标签: python pandas

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

  1. (A /埃及/二千○一分之八十四(H1N2))
  2. A /巴西/二千○四分之一千七百五十九(H3N2)
  3. A /阿根廷/二千○四分之一百二十六
  4. 我只想从菌株名称中取出A / COUNTRY / NUMBER / YEAR,例如的 A /巴西/二千○四分之一千七百五十九即可。我试过了:

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

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

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

1 个答案:

答案 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))

此代码适用于此处拼写的特定情况,因为诀窍是隔离的“应变名称”是用开头括号(“(”)值分割后的最长字符串。