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

当DataFrame的Tags列长度超6位时,如何拆分标签并复制对应行?

解决DataFrame中Tags列超长拆分并复制行的问题

我明白你的需求啦——你不仅要清理Tags列里的非数字字符,还要把长度超过6位的标签拆成每6位一组,同时复制对应行的其他数据对吧?咱们一步步来搞定这个问题。

第一步:先做Tags列的基础清理

首先优化你的现有代码,先把Tags列转成纯数字的字符串,去掉所有非数字字符:

import pandas as pd

# 你的示例数据
df = pd.DataFrame(
    {'user': ['Ticket ID', 'Closed Time', 'Tags'], 
     'income': [1, 2, 3], 
     'Closed Time': ['08/19/20', '08/18/20', '08/17/20'], 
     'Tags': [270201, 284912, 123456789101]}
)

# 清理Tags:保留纯数字,转为字符串
df['Tags'] = df['Tags'].astype(str).str.replace(r'[^0-9]+', '', regex=True)

第二步:拆分超长标签并展开行

接下来是核心操作:把每个超长的标签按6位分割,然后把这些分割后的标签拆成单独的行,同时保留原行的其他所有数据。这里用apply+explode组合来实现:

# 定义拆分函数:把字符串按每6位分割成列表
def split_long_tags(tag_str):
    # 从索引0开始,每6位取一段,直到字符串末尾
    return [tag_str[i:i+6] for i in range(0, len(tag_str), 6)]

# 给Tags列赋值为拆分后的列表,然后用explode展开成多行
df_expanded = df.assign(Tags=df['Tags'].apply(split_long_tags)).explode('Tags', ignore_index=True)

第三步:统一标签为6位(可选)

如果你希望所有标签都严格是6位(包括拆分后不足6位的片段),可以用str.zfill(6)来补前导零:

df_expanded['Tags'] = df_expanded['Tags'].str.zfill(6)

最终效果

运行完上面的代码后,你的df_expanded会变成这样:

userincomeClosed TimeTags
Ticket ID108/19/20270201
Closed Time208/18/20284912
Tags308/17/20123456
Tags308/17/20789101

可以看到原来的超长标签123456789101被拆成了123456和789101,对应的其他列内容也被复制了一份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:22:39