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

基于Python Pandas实现IP前两段匹配对应地区的代码问题

问题解决方法

你的代码存在语法错误,同时可以用更高效的方式实现需求,具体修正和优化如下:

1. 核心语法错误

df.iterrows 是Pandas的方法,必须加上括号 df.iterrows() 才能生成可遍历的迭代器,否则循环会直接拿到方法对象,无法遍历行数据。

2. 效率优化:替换行遍历为向量化操作

Pandas的优势是向量化计算,用行遍历的方式效率较低,推荐直接通过字符串匹配筛选数据。

修正后的代码

import pandas as pd

# 读取CSV,若CSV自带表头(比如第一行是ip_prefix、region),请删除names参数
df = pd.read_csv('test.csv', names=['col1', 'col2'], sep=',')

def ipsheet():
    val = input('Enter the ip address : ')
    # 提取IP地址的前两段
    val1 = ".".join(val.split(".")[0:2])
    print(f"匹配前缀:{val1}")
    
    # 筛选col1中以目标前缀开头的行,取第一个匹配的地区
    match_result = df[df['col1'].str.startswith(val1)]['col2'].iloc[0]
    print(f"对应地区:{match_result}")
    
    # 若需要获取所有匹配结果,可转为列表
    # all_results = df[df['col1'].str.startswith(val1)]['col2'].tolist()
    # print(f"所有匹配地区:{all_results}")

ipsheet()

额外提示

  • 如果输入的IP格式可能不合法,可以增加格式校验逻辑,比如用正则表达式验证输入是否符合IP格式。
  • 若CSV文件的第一行是表头(而非数据),务必删除 names=['col1', 'col2'] 参数,避免覆盖原有表头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:23:15