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

Pandas如何映射字典中嵌套元组的索引拆分映射到DataFrame列

Pandas 映射值为元组的字典拆分多列实现方法

不需要为元组内的每个属性单独创建映射字典,基于单个元组值字典即可完成多列映射,以下是两种最常用的实现方式:


方法1:单次映射后直接批量拆分(推荐,代码最简洁)

先通过map拿到存储元组的Series,调用.tolist()将元组序列转为二维列表,可直接赋值给多个目标列,仅需一次字典查找,执行效率最高:

import pandas as pd

# 原始元组值字典
Fruit_dict = {
    'Apple' : ('red', 'small'),
    'Pear' : ('green', 'small'),
    'Grapefruit' : ('yellow', 'big')
}

# 示例DataFrame
df = pd.DataFrame({'Fruit': ['Apple', 'Pear', 'Grapefruit', 'Apple']})

# 一行完成两列映射
df[['Color', 'Size']] = df['Fruit'].map(Fruit_dict).tolist()

如果DataFrame里存在字典未覆盖的水果值,可通过dict.get()加默认值避免报错:

# 不存在的键默认返回(None, None),对应列赋值为空值
df[['Color', 'Size']] = df['Fruit'].map(
    lambda x: Fruit_dict.get(x, (None, None))
).tolist()

方法2:映射时指定元组索引取值(适合仅需部分属性的场景)

如果不需要提取元组内的所有值,只需要特定位置的属性,可以在map中传入匿名函数,直接按键取值后取对应索引位即可:

# 取元组第0位(索引0)映射为颜色列
df['Color'] = df['Fruit'].map(lambda x: Fruit_dict[x][0])
# 取元组第1位(索引1)映射为尺寸列
df['Size'] = df['Fruit'].map(lambda x: Fruit_dict[x][1])

注意事项

不推荐使用.str[0]这类字符串访问器提取元组元素,该方法是为字符串类型设计的,处理元组时执行效率低,遇到特殊值时容易触发异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:15:41