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

基于电话号码起始字符匹配字典拆分并保存多DataFrame

解决方案

步骤说明

  1. 修正字典的引号格式(原字典使用中文引号会导致Python语法报错,需替换为英文引号)
  2. 从电话号码列提取前三位作为区号
  3. 反转区号-州名字典,实现通过区号快速匹配对应州名
  4. 循环匹配并导出对应州的联系人列表

完整代码

import pandas as pd

# 修正后的区号字典(替换中文引号为英文引号)
area_codes = {
    "New Hampshire": ["602"],
    "Vermont": ["803"]
}

# 创建示例DataFrame
data = {
    "name": ["Bob", "Joe"],
    "job title": ["doctor", "pharmacist"],
    "phone number": ["602-123-4567", "803-123-4567"]
}
df = pd.DataFrame(data)

# 提取电话号码的前三位作为区号
df["area_code"] = df["phone number"].str[:3]

# 反转字典,得到{区号: 州名}的映射
code_to_state = {code: state for state, codes in area_codes.items() for code in codes}

# 循环匹配并导出CSV
for code, state in code_to_state.items():
    # 筛选对应区号的行,删除临时生成的area_code列
    state_df = df[df["area_code"] == code].drop(columns=["area_code"])
    # 保存为指定格式的CSV文件,index=False避免导出索引列
    state_df.to_csv(f"{state} contact list.csv", index=False)

代码解释

  • 修正字典引号:Python仅支持英文引号作为字符串边界,原字典的中文引号会触发语法错误,必须替换。
  • 提取区号:利用str[:3]直接截取电话号码列的前3个字符,生成用于匹配的临时列area_code。
  • 反转字典:将原字典的“州名→区号列表”结构转换为“区号→州名”,简化后续匹配逻辑,避免嵌套循环。
  • 筛选导出:遍历每个区号,筛选出对应行后清理临时列,最终按要求命名并导出CSV文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:39:54