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

如何基于DataFrame的source列条件创建target新列并按指定规则赋值

实现代码

你可以用pandas的分组累计计数功能实现需求,完整代码如下:

import pandas as pd

# 目标取值列表
target_list = [6,7,8,9,10,11,12,13]

# 如果你已经有现成的DataFrame可以跳过构造原始数据的这一步
df = pd.DataFrame({
    'value': [0.83,0.99,0.20,0.79,0.19,0.86,0.31,0.19,0.50,0.44,1.00,0.67,0.74,0.43,0.21,0.03,1.00,0.57,0.67,1.00],
    'source': [0,0,0,0,0,0,1,1,2,2,2,2,3,3,3,4,4,4,5,5]
})

# 核心实现逻辑
df['target'] = df.groupby('source').cumcount().map(lambda x: target_list[x])

# 打印验证结果
print(df)

逻辑说明

  • 先通过groupby('source')把原始数据按source列的取值划分成不同分组
  • 调用cumcount()方法为每个分组内的行生成从0开始的连续递增序号,这个序号刚好可以作为索引匹配目标列表的取值
  • 最后通过映射把序号替换为目标列表的对应值,赋值给新列target即可得到期望结果。
    如果后续分组内行数超过目标列表长度,补充target_list的元素即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:36:01