regex - 基于多个分隔符的 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 的元素。
解决方案
这是一种方式:
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
推荐阅读
- javascript - 函数返回后更改 div 显示样式
- jekyll - 哪些 Jekyll 指令允许自动生成下一个/上一个主题导航链接?
- sql - 向具有键约束的表中添加行时处理并发
- jquery - 需要帮助创建响应式两列全高 div,其中一个 div 中的垂直中心内容和其他 div 中的图像轮播
- javascript - 错误:基于数组状态的条件渲染
- java - 关于 while 循环和 if 语句嵌套
- r - 使用 map 循环多个变量以在嵌套数据集中回归
- javascript - 这段代码如何更新 React 中的状态?
- javascript - 如何缓慢地选中/取消选中复选框剑道网格
- ios - 检查用于在 Swift 中编译应用程序的 Xcode/iOS SDK 版本