是否可以使用pandas字典实现DataFrame映射新增列?具体如何操作?
问题解答
是否可以通过pandas字典实现
完全可以,这是pandas场景下分类值映射的最常用实现方案之一。
具体操作步骤
- 步骤1:构造Code到Value的映射字典,仅需要写入有对应关系的键值对即可,无对应关系的Code(如本题中的DZ)后续会自动识别为空值
- 步骤2:调用pandas Series的
map()方法,将构造好的字典传入,直接赋值给新的Value列即可
完整可运行示例代码
import pandas as pd # 构造仅含Code列的示例DataFrame df = pd.DataFrame({ 'Code': ['DA', 'DB', 'DC', 'DD', 'DE', 'DF', 'DG', 'DX', 'DY', 'DZ'] }) # 构造映射字典 code_mapping = { 'DA': 'A', 'DB': 'A', 'DC': 'A', 'DD': 'B', 'DE': 'B', 'DF': 'B', 'DG': 'C', 'DX': 'C', 'DY': 'C' } # 新增Value列 df['Value'] = df['Code'].map(code_mapping) # 如果希望空值显示为空字符串而非NaN,可改用以下代码 # df['Value'] = df['Code'].map(code_mapping).fillna('')
结果说明
执行完成后,Code为DA/DB/DC的行Value为A,DD/DE/DF对应B,DG/DX/DY对应C,DZ对应的Value为NaN(或空字符串,取决于是否添加fillna方法),完全匹配需求。
内容的提问来源于stack exchange,提问作者Amin Jebeli
相关产品推荐
相关产品推荐

