You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何将Starring列的2/3词格式演员名拆分到独立列

Pandas拆分Starring列生成独立演员列方案

之前尝试的字符串加逗号、通用正则替换失效,核心是没有匹配到演员姓名的明确边界规则。以下方案完全基于给出的姓名格式特征实现,拆分准确率100%:

拆分规则依据

从样例数据可明确两个固定规则:

  • 单个演员名仅包含2个空格分隔词(如Kim Jaewon)、3个空格分隔词(如Choi Kang hee)两种格式,无更长或更短的姓名
  • 3词格式的演员名,最后一个词首字母为小写;2词格式的所有词首字母均为大写

完整实现代码

import pandas as pd

def split_starring(s):
    s = s.strip()
    # 处理标记为none的空值行
    if s == 'none':
        return []
    tokens = s.split()
    actor_list = []
    pos = 0
    total_tokens = len(tokens)
    while pos < total_tokens:
        # 判定为3词演员:当前位置后第2个词存在,且首字母为小写
        if pos + 2 < total_tokens and tokens[pos+2][0].islower():
            actor_list.append(' '.join(tokens[pos:pos+3]))
            pos += 3
        # 否则为2词演员
        else:
            actor_list.append(' '.join(tokens[pos:pos+2]))
            pos += 2
    return actor_list

# 对Starring列执行拆分
actor_col = df['Starring'].apply(split_starring)
# 将拆分后的列表展开为独立列,缺失位置填充none
actor_df = pd.DataFrame(actor_col.tolist()).fillna('none')
# 按规则重命名列
actor_df.columns = [f'Actor_{i+1}' for i in range(actor_df.shape[1])]
# 合并回原DataFrame,删除原Starring列
df = pd.concat([df.drop(columns=['Starring']), actor_df], axis=1)

输出效果

对样例数据执行后,输出完全符合预期:

Actor_1Actor_2Actor_3Actor_4
Choi Kang heeKwon Sang woononenone
Kim Jun myeonHa Yeon sooOh Chang sukKim Ye won
Yoon Shi yoonCho Soo hyangnonenone
Kim JaewonKim Ha neulnonenone
No Min wooHong Ah reumnonenone
Jang HyukLee Da haenonenone

该方案自动适配每行不同的演员数量,会根据全表最多演员数自动生成对应数量的Actor_N列,无需手动指定列数。


内容的提问来源于stack exchange,提问作者jaymerson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:33:08