首页 > 解决方案 > 基于多个分隔符的 Python df 拆分字符串并进一步搜索模式以填充列

问题描述

我试图更简洁地询问以下内容,以便我可以理解您的解决方案并从那里即兴创作。我有一个包含某些列的 df 以及一个名为 ROLES 的列,如下所示:

COLA COLB COLC   ROLES
                 ABCD Walters Sr. (Actor), XYZ (Actor, Director), PQR Industries (Producer, Writer)
                 PQABC12 (Director), DGKJG (Actor), PQR (Producer), DJGHJDGH (Lead Role)

我想拆分这个 ROLES 列,以便我将该行的 Actors 提取到另一个名为 ACTORS 的列中,其余的人可以进入 OTHER ROLES 列。所以 期望的输出看起来像:

COLA COLB COLC   ACTORS       OTHER ROLES
                 ABCD, XYZ    XYZ,PQR
                 DGKJG        PQABC12, PQR, DJGHJDGH 

我的方法是首先将 ROLES 列拆分为一个列表,其中包含每个实体/人的元素。然后遍历列表获取包含 Actor 的元素。

标签: regexpandas

解决方案


这是一种方式:

df = df.assign(ROLES=df['ROLES'].str.split(",\s*(?![^()]*\))")).explode('ROLES')
df['Type'] = np.where(df['ROLES'].str.contains('Actor'),'Actor','Other Roles')
newdf = df.groupby('Type').agg({'ROLES':lambda x: ','.join(x)}).reset_index()
newdf = newdf.set_index('Type').T

推荐阅读