如何不用lambda函数将DataFrame列作为字典键生成新列?
不用Lambda函数实现字典映射生成新列
当然可以不用lambda函数,用pandas自带的方法就能轻松实现,下面是几种常用方案:
- 方法1:使用
Series.map()(推荐)map()方法本身就支持传入字典做键值映射,是处理这类需求最直接高效的方式:
import pandas as pd # 示例数据集 df = pd.DataFrame({'A': ['New York', 'California', 'Florida', 'Texas']}) my_dict = {"New York":1, "California":2, "Florida":3} # 生成列B,未匹配的项会显示NaN df['B'] = df['A'].map(my_dict) # 如果需要给未匹配项设置默认值,比如0,可结合fillna() df['B'] = df['A'].map(my_dict).fillna(0)
- 方法2:使用
Series.replace()replace()同样支持字典映射,和map()的区别是,未匹配的项会保留原列的值。如果需要统一处理未匹配项,可以用mask()来替换:
import pandas as pd df = pd.DataFrame({'A': ['New York', 'California', 'Florida', 'Texas']}) my_dict = {"New York":1, "California":2, "Florida":3} # 生成列B,未匹配项保留原城市名 df['B'] = df['A'].replace(my_dict) # 将未匹配项替换为默认值(比如0) df['B'] = df['B'].mask(~df['B'].isin(my_dict.values()), 0)
内容的提问来源于stack exchange,提问作者Dhanush Sonkusare
相关产品推荐
相关产品推荐

