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

如何用NumPy数组填充Pandas DataFrame列

将数组指标映射到Pandas DataFrame列

问题说明

我有一个Pandas DataFrame,其中一列名为dist。针对每个dist的唯一值(对应数组a),计算得到的指标存储在数组b中。需要把这些b值匹配到原DataFrame的每一行,生成包含新列b的目标结果。

示例数据

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array([[1, 2, 3,4,5], [4,4,4,4,4], [1,2,3,3,1]]),
               columns=['Id', 'size', 'dist'])

a = np.array([1,2,3])  # dist列的唯一值集合
b = np.array([10,9,8]) # 对应每个唯一值的指标值

目标结果

df = pd.DataFrame(np.array([[1, 2, 3,4,5], [4,4,4,4,4], [1,2,3,3,1],[10,9,8,8,10]]),
               columns=['Id', 'size', 'dist','b'])

实现方法

方法1:用map快速映射(推荐)

先把a和b转成键值对字典,再通过map函数将dist列的值对应到b的指标:

# 构建映射字典
dist_to_b = dict(zip(a, b))
# 添加新列
df['b'] = df['dist'].map(dist_to_b)

方法2:用replace直接替换

原理和map一致,直接通过replace函数完成值的替换并生成新列:

df['b'] = df['dist'].replace(dict(zip(a, b)))

方法3:用merge合并(适合复杂关联场景)

如果需要更灵活的匹配逻辑,可以先把a和b转成临时DataFrame,再和原表做左连接:

# 创建临时映射表
map_table = pd.DataFrame({'dist': a, 'b': b})
# 左连接保证原表所有行保留
df = df.merge(map_table, on='dist', how='left')

运行任意一种方法后,都能得到符合要求的目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:52:20