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

如何基于DataFrame中坐标列的重复值创建分组ID列?

为重复坐标点生成分组ID列

问题描述

现有如下结构的DataFrame:

BXBY
4.112.4
4.112.4
4.112.4
10.014.5
10.014.5
9.75.6

需要完成两个操作:

  1. 将BX和BY的数值截断为整数(如4.1→4,12.4→12)
  2. 新增ID列,给横纵坐标完全相同的行分配同一个分组标识,最终结果如下:
BXBYID
4121
4121
4121
10142
10142
953

解决方案

使用pandas可以快速实现需求,步骤如下:

1. 导入库并创建原始DataFrame

import pandas as pd

# 构造原始数据
data = {
    'BX': [4.1, 4.1, 4.1, 10.0, 10.0, 9.7],
    'BY': [12.4, 12.4, 12.4, 14.5, 14.5, 5.6]
}
df = pd.DataFrame(data)

2. 截断坐标为整数

通过astype(int)直接提取数值的整数部分(截断小数,而非四舍五入):

df['BX'] = df['BX'].astype(int)
df['BY'] = df['BY'].astype(int)

3. 生成分组ID

有两种简洁的方法生成ID:

方法一:使用groupby.ngroup()

通过分组后获取组的索引,加1让ID从1开始:

df['ID'] = df.groupby(['BX', 'BY']).ngroup() + 1
方法二:使用pd.factorize()

将坐标组合为元组后,用factorize生成唯一标识:

df['ID'] = pd.factorize(df[['BX', 'BY']].apply(tuple, axis=1))[0] + 1

执行完成后,你的DataFrame就会变成目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:05:38