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

如何用Python筛选Excel中首尾行Name不含FTTH的project_id

需求说明

我们有一个包含project_id、Name、Date三列的Excel文件,数据如下:

project_idNameDate
755Waber2019-04-08
755Wabern2020-06-16
755Wabern (FTTH geplan)2020-07-24
755Wabern FTTH DTAG2020-08-15
755Wabern (FTTH DTAG gg)2021-03-05
755Wabern2021-09-13
134Lerbeck2019-04-18
134BAd oyehausen (FttH svd)2020-06-26
134Werre Park2020-07-14
134Werre Park (FTTH ssd)2020-08-25
134Werre Park (FTTH)2021-03-15
134Bad oyehausen2021-09-23
584kitern2019-04-08
584Lausen (ftth los)2020-06-16
584kitener (FTTH geplan)2020-07-24
584Lausern2020-08-15
584Lausern (FTTH DTAG gg)2021-03-05

需要筛选出符合以下条件的project_id:同一project_id对应的首行和末行的Name字段中,均不包含任何大小写形式的FTTH(如FTTH、FttH、ftth等)。例如project_id 755符合条件(首行Name是Waber,末行是Wabern,都不含FTTH),而project_id 584不符合(末行Name包含FTTH)。

期望得到的结果如下:

project_id
755
134
Python实现方案

步骤说明

  1. 依赖准备:需要使用pandas处理表格数据,openpyxl读取Excel文件,先安装依赖。
  2. 读取Excel文件,加载数据到DataFrame。
  3. 按project_id分组,提取每组的首行和末行的Name字段。
  4. 检查这两个Name是否都不包含任何大小写的FTTH(统一转小写后判断是否存在"ftth")。
  5. 筛选符合条件的project_id,输出或保存结果。

代码实现

import pandas as pd

# 替换为你的Excel文件路径
excel_path = "your_excel_file.xlsx"
# 读取Excel数据
df = pd.read_excel(excel_path)

# 按project_id分组,提取每组第一个和最后一个Name
grouped_names = df.groupby("project_id")["Name"].agg(["first", "last"])

# 定义函数:判断字符串是否不包含任何大小写的FTTH
def check_no_ftth(name):
    return "ftth" not in name.lower()

# 筛选出首行和末行Name都不含FTTH的project_id
valid_projects = grouped_names[
    grouped_names["first"].apply(check_no_ftth) & 
    grouped_names["last"].apply(check_no_ftth)
].reset_index()

# 输出结果
print("符合条件的project_id:")
print(valid_projects[["project_id"]])

# 可选:将结果保存到新的Excel文件
# valid_projects[["project_id"]].to_excel("valid_projects.xlsx", index=False)

代码解释

  • 使用groupby("project_id")["Name"].agg(["first", "last"])快速获取每组的首尾行Name,避免手动遍历分组。
  • 通过name.lower()将字符串转为小写,再判断是否包含"ftth",实现大小写不敏感的匹配。
  • 用布尔索引筛选同时满足首尾行Name都不含FTTH的分组,最后提取project_id得到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:25:18