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

如何在Pandas中基于YouTube视频标签列表填充对应列的存在标记值

如何给YouTube视频标签生成目标格式的列填充?

嘿,我来帮你搞定这个标签列填充的事儿!你已经完成了读取数据和提取标签的步骤,现在就差最后一步给新增的标签列赋值了对吧?

首先先给你优化一下标签提取的代码——你原来的方法用了join再split,其实用Pandas的explode更简洁高效:

# 提取所有唯一标签,一步到位
all_tags = df['tags'].explode().unique().tolist()

接下来给你两种填充标签列的方法,按需选择:

方法一:直观逐行判断(适合新手理解逻辑)

这种方法逻辑直白,一眼就能看明白:

# 先复制原DataFrame,避免修改原始数据
df_tags_as_columns = df.copy()
# 遍历每个标签,给对应列赋值
for tag in all_tags:
    df_tags_as_columns[tag] = df_tags_as_columns['tags'].apply(lambda x: 1 if tag in x else pd.NA)

这里用pd.NA是Pandas推荐的空值表示,比np.nan更适配Pandas的类型系统。

方法二:高效批量处理(适合数据量大的情况)

如果你的视频数据比较多,这种方法性能会好很多:

# 先把每个视频的标签拆成单独行,生成独热编码
tag_dummies = pd.get_dummies(df['tags'].explode()).groupby(level=0).max()
# 把独热编码和原数据合并
df_tags_as_columns = pd.concat([df, tag_dummies], axis=1)
# 如果需要把0替换成NaN(完全匹配你的需求)
df_tags_as_columns = df_tags_as_columns.replace(0, pd.NA)

这里的逻辑是:explode把每个标签拆成一行,get_dummies自动生成每个标签的列,存在标签的行赋值1,否则0;然后按原视频的索引分组取最大值,把同一个视频的所有标签行合并,最后把0换成NaN就完美符合你的要求了。

另外提一句:你原来用pd.concat([df, pd.DataFrame(columns=all_tags)])的方式会多出来一行空数据,因为空的DataFrame默认会加一行,所以用上面的方法直接处理会更稳妥哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:42:34