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

如何基于索引匹配将数组元素映射到DataFrame列?

解决DataFrame列值与数组索引匹配替换的问题

你可以通过以下两种简单方法实现需求,核心逻辑是把DataFrame列中的数值作为数组索引,取出对应元素替换,同时处理超出数组索引范围的情况:

方法一:使用map()结合自定义函数

这种方式灵活可控,能直接处理索引越界的情况:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'col1': [4, 3, 5, 3],
    'col2': [1, 2, 3, 1]
})
arr = ["low", "medium", "neutral", "high", "unknown"]

# 定义映射规则:数值在数组索引范围内取对应元素,否则取最后一个元素(unknown)
def map_to_arr(x):
    if 0 <= x < len(arr):
        return arr[x]
    return arr[-1]

# 对col1和col2分别应用映射
df['col1'] = df['col1'].map(map_to_arr)
df['col2'] = df['col2'].map(map_to_arr)

# 输出结果
print(df)

运行后会得到期望的结果:

col1     col2
0  unknown      low
1     high   medium
2  unknown     high
3     high      low

方法二:用字典映射+replace()

先把数组的索引和元素转换成字典,再通过replace()替换,最后处理越界值:

import pandas as pd

df = pd.DataFrame({
    'col1': [4, 3, 5, 3],
    'col2': [1, 2, 3, 1]
})
arr = ["low", "medium", "neutral", "high", "unknown"]

# 生成索引-元素的映射字典
index_map = dict(enumerate(arr))

# 先替换已知索引的数值,再把超出范围的填充为unknown
df['col1'] = df['col1'].replace(index_map).fillna(arr[-1])
df['col2'] = df['col2'].replace(index_map).fillna(arr[-1])

这种方法代码更简洁,同样能达到目标效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:38:06