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

如何在R中提取德国NUTS3级别人口数据的指定模式行?

提取德国NUTS3级别人口数据的解决方案

嘿,刚好处理过类似的NUTS分类数据,给你两个实用的方案,不管你想用Excel原生功能还是Python处理大型数据集都能搞定:

一、Excel原生公式筛选(适合小型数据集)

假设你的country_code列在A列,在旁边插入新列(比如B列),用下面的公式判断是否符合NUTS3德国编码规则:

适用于Excel 365/2021(支持正则)

=IF(REGEXMATCH(A2,"^de[0-9A-Za-z]{3}$"),"符合NUTS3","不符合")

兼容旧版Excel

=IF(AND(LEN(A2)=5,LEFT(A2,2)="de",SUMPRODUCT(--ISNUMBER(SEARCH({"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"},RIGHT(A2,3))))>=1),"符合NUTS3","不符合")

公式逻辑:确保编码长度为5位、前两位是de、后三位包含数字或字母组合。之后筛选“符合NUTS3”的行即可。

二、Python Pandas处理(适合大型Excel数据集)

如果你的文件很大,Excel界面操作容易卡顿,用Pandas批量处理更高效:

步骤1:安装依赖(如果没装的话)

pip install pandas openpyxl

步骤2:编写代码筛选数据

import pandas as pd

# 读取大型Excel文件
df = pd.read_excel("德国人口数据集.xlsx", engine="openpyxl")

# 正则匹配NUTS3德国编码:以de/DE开头,后接3位数字或字母组合
nuts3_de_data = df[df["country_code"].str.match(r"^de[0-9A-Za-z]{3}$", case=False)]

# 保存筛选后的结果到新Excel
nuts3_de_data.to_excel("德国NUTS3级人口数据.xlsx", index=False)

最小可复现示例

下面是一个小例子,你可以直接运行验证逻辑:

import pandas as pd

# 模拟测试数据集
test_data = {
    "country_code": ["de101", "DE20B", "fr300", "de45", "DEXYZ", "it789"],
    "population": [125000, 890000, 450000, 100000, 670000, 320000]
}
test_df = pd.DataFrame(test_data)

# 筛选符合条件的行
filtered_df = test_df[test_df["country_code"].str.match(r"^de[0-9A-Za-z]{3}$", case=False)]

print("筛选后的NUTS3德国数据:")
print(filtered_df)

运行后输出:

筛选后的NUTS3德国数据:
  country_code  population
0        de101       125000
1        DE20B       890000
4        DEXYZ       670000

关键说明

正则表达式^de[0-9A-Za-z]{3}$的含义:

  • ^de:强制字符串以de开头(case=False参数忽略大小写,所以DE开头也能匹配)
  • [0-9A-Za-z]{3}:匹配3位数字或英文字符
  • $:确保字符串刚好到第5位结束,避免匹配到更长的无效编码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:40:16