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

数据集转换:拆分DataFrame的Tag列并实现每行单一标签

解决方法:拆分DataFrame的Tag列并展开为多行

嘿,这个需求用pandas其实很容易实现,我给你一步步讲清楚:

首先,先假设我们有一个类似这样的示例DataFrame:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'ID': [1, 2],
    'Name': ['Alice', 'Bob'],
    'Tag': ['Python/Data Science/Pandas', 'Java/Spring Boot']
})

方法一:使用str.split() + explode()(推荐,pandas 0.25+可用)

这是最简洁的方式,先把Tag列按/拆分成列表,再用explode()方法把列表中的每个元素拆成单独的行,其他列的内容会自动复制:

# 拆分Tag列为列表,然后展开为多行
df_expanded = df.assign(Tag=df['Tag'].str.split('/')).explode('Tag')

# 如果需要重置索引(避免原索引重复),可以加上ignore_index=True
df_expanded = df.assign(Tag=df['Tag'].str.split('/')).explode('Tag', ignore_index=True)

处理后的结果会是这样:

IDNameTag
1AlicePython
1AliceData Science
1AlicePandas
2BobJava
2BobSpring Boot

方法二:兼容旧版pandas(低于0.25)的方案

如果你的pandas版本比较旧,没有explode()方法,可以用set_index() + stack()的组合来实现:

# 先设置其他列为索引,拆分Tag列后堆叠,最后重置索引
df_expanded = df.set_index(['ID', 'Name'])['Tag'].str.split('/', expand=True).stack().reset_index(name='Tag').drop('level_2', axis=1)

额外注意点

  • 如果Tag列存在空值(比如NaN),explode()默认会保留这些空行,如果你想去掉空行,可以在处理后加上dropna(subset=['Tag']):
    df_expanded = df_expanded.dropna(subset=['Tag'])
    
  • 确保Tag列的内容都是字符串类型,如果有非字符串值,先转成字符串再拆分:df['Tag'] = df['Tag'].astype(str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:13:25