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

如何在Pandas DataFrame中移除Name列的最后两个词?

移除Pandas DataFrame中'Name'列的年份和地点

方法一:正则表达式批量替换

针对'Name'列里混有4位年份(如2024)和指定地点(伊斯兰堡、拉合尔等)的情况,用正则一次性匹配并移除这些内容即可,步骤如下:

  1. 导入依赖并准备示例数据:
import pandas as pd
import re

# 示例DataFrame(可替换成你的真实数据)
df = pd.DataFrame({
    'Name': [
        '2024 伊斯兰堡 城市供水项目',
        '拉合尔 2023 道路修缮工程',
        '卡拉奇 社区绿化计划 2022',
        '2021 白沙瓦 校园翻新项目'
    ]
})
  1. 定义需移除的地点列表,构建正则匹配模式:
# 补充你需要移除的所有地点名称
locations = ['伊斯兰堡', '拉合尔', '卡拉奇', '白沙瓦']
# 对地点名称做转义,避免特殊字符干扰正则匹配
escaped_locations = [re.escape(loc) for loc in locations]

# 构建正则模式:匹配4位年份 或 指定地点,前后可能带空格
pattern = r'\s*(?:\d{4}|' + '|'.join(escaped_locations) + r')\s*'
  1. 执行替换并清理多余空格:
# 替换目标内容,同时合并连续空格、去除首尾空格
df['Cleaned_Name'] = df['Name'].str.replace(pattern, '', regex=True)\
                               .str.replace(r'\s+', ' ', regex=True)\
                               .str.strip()

处理后Cleaned_Name列会得到纯核心内容,比如城市供水项目、道路修缮工程等。


方法二:直接提取核心内容(适合固定结构)

如果'Name'列的格式是「年份/地点 + 核心名称 + 年份/地点」,可以直接捕获中间的核心文本:

df['Cleaned_Name'] = df['Name'].str.extract(
    r'^(?:\d{4}|' + '|'.join(escaped_locations) + r')?\s*(.*?)\s*(?:\d{4}|' + '|'.join(escaped_locations) + r')?$'
)[0]

这个方法和方法一效果一致,更适合格式规整的数据集。


内容的提问来源于stack exchange,提问作者Winston Mulyawan Setiabudi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:17:21