如何为Excel的Municipio列自动生成递增的codigo municipio分组编码?
按市政名称自动生成递增编码的高效方案
以下是几种适合处理大规模数据集的可行方案,无需手动操作:
Excel 方案
假设你的"Municipio"列在A列,从第2行开始有数据:
- 在B2单元格输入公式:
=IF(A2=A1,B1,MAX($B$1:B1)+1) - 将B1单元格设为
1(第一个市政的编码) - 选中B2单元格,下拉填充至所有行即可
这个公式会判断当前行的市政名称是否和上一行相同,相同则沿用之前的编码,不同则自动生成新的递增编码。
Python Pandas 方案
适合处理超大规模数据集,代码简洁高效:
import pandas as pd # 读取你的数据集(替换为实际文件路径) df = pd.read_csv("your_dataset.csv") # 生成"codigo municipio"列:检测市政名称变化并累计计数 df["codigo municipio"] = (df["Municipio"] != df["Municipio"].shift()).cumsum() # 保存处理后的数据集 df.to_csv("dataset_with_code.csv", index=False)
这段代码通过对比当前行与上一行的市政名称,每次变化时计数加1,快速生成编码。
SQL 方案
如果数据存储在数据库中,可使用窗口函数实现:
按市政名称排序生成编码
SELECT Municipio, DENSE_RANK() OVER (ORDER BY Municipio) AS "codigo municipio" FROM your_table;
按数据原有顺序生成编码(按出现先后计数)
SELECT Municipio, SUM(CASE WHEN prev_municipio IS NULL OR Municipio != prev_municipio THEN 1 ELSE 0 END) OVER (ORDER BY row_id) AS "codigo municipio" FROM ( SELECT Municipio, LAG(Municipio) OVER (ORDER BY row_id) AS prev_municipio, row_id -- 替换为你的表中用于排序的主键/行号字段 FROM your_table ) AS sub_query;
内容的提问来源于stack exchange,提问作者Themono99
相关产品推荐
相关产品推荐

