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

基于字典更新Pandas DataFrame性别字段的最优方法

最优实现方法:使用Pandas的map()函数

嘿,这个需求用Pandas的map()方法就能轻松搞定,这也是最高效简洁的解决方案,尤其适合这种通过字典做值映射的场景。

完整代码示例

import pandas as pd

# 给定的性别字典
dict_sex = {'Tom': 'Male', 'Hans': 'Male','Christina':'Female'}

# 创建初始的空Sex字段DataFrame
df = pd.DataFrame({
    'Name': ['Tom', 'Hans', 'Christina'],
    'Sex': ['', '', '']
})

# 核心操作:用map完成字段更新
df['Sex'] = df['Name'].map(dict_sex)

# 输出结果
print(df)

执行后你会得到更新后的DataFrame:

NameSex
TomMale
HansMale
ChristinaFemale

为什么这是最优解?

  • 性能高效:map()是Pandas专门为值映射优化的方法,内部实现比apply()这类循环式操作快得多,数据量越大优势越明显。
  • 代码简洁:一行代码就完成映射填充,可读性极强,一眼就能看明白逻辑。
  • 容错性可扩展:如果你的DataFrame里存在字典中没有的Name值,可以用fillna()补充默认值,比如:
    df['Sex'] = df['Name'].map(dict_sex).fillna('Unknown')
    

其他方法对比(不推荐)

比如用apply()加匿名函数:

df['Sex'] = df['Name'].apply(lambda x: dict_sex[x])

虽然也能实现需求,但apply()本质是逐行循环处理,在数据量较大时性能会比map()差很多,所以不是最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:02:02