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

如何根据id与列号对应键值对填充DataFrame指定位置的数值

DataFrame按id列映射规则填充指定位置解决方案

以下是两种可直接运行的实现方案,基于Python pandas库:

首先构造测试数据,你可以替换为自己的实际数据:

import pandas as pd

# 原始全0 DataFrame
df = pd.DataFrame({
    "id": ["001", "003", "007"],
    0: [0, 0, 0],
    1: [0, 0, 0],
    2: [0, 0, 0]
})

# id与目标列映射表
map_df = pd.DataFrame({
    "id": ["001", "007"],
    "col": [2, 0]
})

方案1:小数据量首选,逻辑简单易理解

直接遍历映射表逐行赋值,代码可读性最高:

for _, row in map_df.iterrows():
    df.loc[df["id"] == row["id"], row["col"]] = 1

方案2:大数据量首选,全矢量化无循环

避免Python层循环,适合万行以上的大规模数据集:

# 构造待填充的位置标记Series
fill_series = map_df.assign(val=1).set_index(["id", "col"])["val"]
# 索引对齐后填充、恢复原表结构
df = df.set_index("id").stack().add(fill_series, fill_value=0).unstack().reset_index()

注意事项

如果你的原始DataFrame的列0/1/2是字符串类型,只需要先把映射表的col列转为字符串即可:

map_df["col"] = map_df["col"].astype(str)

运行任意方案后输出的df即为你需要的结果:

id012
001001
003000
007100

内容的提问来源于stack exchange,提问作者Mac L. Lak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:45:05