python - 在熊猫中生成唯一ID列
问题描述
我有一个包含三列、bins_x
和bins_y
的数据框z
。我希望添加一个新列,它是和unique
的独特组合的排序“索引” 。下面是我想附加的一个例子。bins_x
bins_y
请注意,为了清楚起见,我订购了数据框,但在这种情况下,顺序并不重要。
import numpy as np
import pandas as pd
np.random.seed(12)
n = 1000
height = 20
width = 20
bins_x = np.random.randint(1, width, size=n)
bins_y = np.random.randint(1, height, size=n)
z = np.random.randint(1, 500, size=n)
df = pd.DataFrame({'bins_x': bins_x, 'bins_y': bins_y, 'z': z})
print(df.sort_values(['bins_x', 'bins_y'])
bins_x bins_y z unique
23 0 0 462 0
531 0 0 199 1
665 0 0 176 2
363 0 1 219 0
468 0 1 450 1
593 0 1 385 2
609 0 1 74 3
663 0 1 46 4
14 0 2 242 0
208 0 2 381 1
600 0 2 445 2
865 0 2 221 3
400 0 3 178 0
75 0 4 281 0
140 0 4 205 1
282 0 4 47 2
838 0 4 212 3
解决方案
使用groupby
和cumcount
:
df['unique'] = df.groupby(['bins_x','bins_y']).cumcount()
>>> df.sort_values(['bins_x', 'bins_y']).head(10)
bins_x bins_y z unique
207 1 1 4 0
259 1 1 313 1
327 1 1 300 2
341 1 1 64 3
440 1 1 398 4
573 1 1 96 5
174 1 2 219 0
563 1 2 398 1
796 1 2 417 2
809 1 2 167 3
推荐阅读
- python - 我正在尝试绘制具有独特颜色但出现错误的集群
- amazon-web-services - 如何从 Bitbucket 部署到 AWS 到不同的实例和不同的文件夹?
- html - 如何使用 express 发送带有 css 的 html 文件作为对连接客户端的响应
- javascript - 将响应缓冲区转换为 JSON
- awt - 在无头 linux 服务器上获取系统剪贴板的内容以进行自动化测试
- ios - 无法将“__NSSingleObjectArrayI”类型的值转换为“NSString”
- spring-boot-actuator - 即使网络连接断开,Spring boot RabbitMq 健康检查也会报告 UP
- javascript - Cordova InAppBowser 在执行脚本后未加载每个页面结果的 DOM
- vim - 禁用语法高亮,但仅适用于一种文件类型
- javascript - 我是否正确地编写了我的 JavaScript 网络动画?