如何基于现有列和字典映射为Pandas DataFrame新增列?
pandas字典映射匹配运营商短信网关实现方法
你卡的列值和字典键匹配的环节,直接用pandas Series内置的map()方法就能实现,不需要写自定义循环,具体步骤如下:
- 映射匹配环节:直接对
cell_provider列调用map(),传入你提前定义好的smsgateway字典,方法会自动遍历列中每一个值,把它作为key去字典里查找对应的网关后缀,匹配不到的内容会返回空值NaN,方便你后续排查异常值。
对应代码:# 匹配得到每个号码对应的短信网关后缀 df["gateway_suffix"] = df["cell_provider"].map(smsgateway) - 拼接环节注意点:如果你的
cell_number列是数值类型,一定要先转成字符串格式再和后缀拼接,否则会触发类型错误。拼接参考代码:# 生成最终的短信邮箱地址列 df["sms_email"] = df["cell_number"].astype(str) + df["gateway_suffix"]
用你提供的测试DataFrame运行后,得到的结果如下:
| Name | cell_provider | cell_number | gateway_suffix | sms_email |
|---|---|---|---|---|
| Tony Danza | Google Fi | 9999999999 | @msg.fi.google.com | 9999999999@msg.fi.google.com |
| John Smith | T-Mobile | 8888888888 | @tmomail.net | 8888888888@tmomail.net |
排错提示:如果运行后
gateway_suffix列出现NaN,优先检查cell_provider列的运营商文本是否和字典的key完全一致,有没有多余空格、大小写不统一、拼写错误的问题,文本不完全一致会直接导致匹配失败。
内容的提问来源于stack exchange,提问作者AKtheAT
相关产品推荐
相关产品推荐

