首页 > 解决方案 > 如何在熊猫系列中使用多个分隔符并拆分为多行

问题描述

我有一个这样的数据框。

df = pd.DataFrame({
    "Name" : ["ABC LLC Ram corp", "IJK Inc"],
    "id" : [101, 102]
 })

    Name                id
0 ABC LLC Ram corp      101
1 IJK Inc               102

我正在尝试根据我的分隔符将名称系列拆分为多行。我可以拆分但也无法保留分隔符。

separators = ["inc","corp","llc"]

我的预期输出是,

Name       id
ABC LLC    101
RAM corp   101
IJK Inc    102

请帮忙,谢谢。

标签: pythonpandasexplode

解决方案


您可以使用str.findall在 column 中查找所有匹配的正则表达式模式的出现Name,然后将这些匹配的出现分配给 columnNameexplodedataframe 上Name

pat = fr"(?i)(.*?(?:{'|'.join(separators)}))"
df.assign(Name=df['Name'].str.findall(pat)).explode('Name')

正则表达式详细信息:

  • (?i):不区分大小写的标志
  • (: 捕获组的开始
  • .*?: 匹配除行终止符以外的任何字符,次数在零到无限次之间,尽可能少 ( lazy match)。
  • (?:: 非捕获组的开始
  • {'|'.join(separators)}:f-string计​​算结果为的表达式inc|corp|llc
  • ): 非捕获组结束
  • ): 捕获组结束

        Name   id
0    ABC LLC  101
0   Ram corp  101
1    IJK Inc  102

推荐阅读