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

如何在Pandas DataFrame中根据列表长度生成重复分数列?

解决Pandas中按列表长度重复数值生成新列的问题

你的需求是给DataFrame新增一列score_repeat,其中每个元素是对应行score的数值,重复次数等于该行titles列表的元素个数。

你之前的代码错误在于,len(df['titles'])获取的是整个titles列的总行数,而非每行列表的元素数量,所以得到的是分数乘以总行数的结果,不符合预期。

方法一:逐行处理(简单直观)

使用apply按行遍历,对每行计算titles的长度后重复score:

df['score_repeat'] = df.apply(lambda row: [row['score']] * len(row['titles']), axis=1)

运行后即可得到你期望的结果:

titles                             score           score_repeat
0  [cat, father, bakery]                43             [43, 43, 43]
1  [brick, swordsmith, park, apple]     68             [68, 68, 68, 68]

方法二:矢量化处理(高效适用于大数据集)

如果你的数据集较大,逐行apply效率较低,可以用矢量化操作实现:

# 提取每行titles列表的长度
lengths = df['titles'].str.len()
# 按长度重复score列的数值
repeated_scores = df['score'].repeat(lengths)
# 按原索引分组,将重复后的数值转为列表
df['score_repeat'] = repeated_scores.groupby(repeated_scores.index).agg(list)

这种方法通过Pandas的内置矢量化方法避免了循环,处理大型数据时性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:24:17