pandas DataFrame 条件字符串分割

0 投票
1 回答
3754 浏览
提问于 2025-04-28 13:45

我在我的数据表中有一列流感病毒的名称。这里有一些名称格式的例子:

  1. (A/Egypt/84/2001(H1N2))
  2. A/Brazil/1759/2004(H3N2)
  3. A/Argentina/126/2004

我只想从这些病毒名称中提取出格式为 A/国家/编号/年份 的部分,比如 A/Brazil/1759/2004。我尝试过这样做:

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

但是,如果我尝试用 .str[0] 来访问,就会漏掉第一个案例。如果我用 .str[1],就会漏掉第二和第三个案例。

有没有一种方法可以同时处理这三种情况?或者有没有办法在字符串分割时应用条件,而不需要逐行遍历整个数据表?

暂无标签

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

这段代码适用于这里提到的特定情况,诀窍在于,分开开括号(“(”)后,菌株的“名称”是最长的字符串。

撰写回答