如何为Pandas DataFrame中每个唯一客户ID统一赋值最大ID_value
Pandas同客户ID统一ID_value为最大值的最高效实现方案
直接使用Pandas内置的groupby+transform组合即可实现,全程为向量化操作,无Python层循环,即使是百万行级数据也能快速处理,对于你仅800个唯一客户ID的场景性能完全过剩,核心代码仅一行:
import pandas as pd # 核心逻辑,直接替换ID_value列 df['ID_value'] = df.groupby('Customer ID')['ID_value'].transform('max')
逻辑说明
groupby('Customer ID')按照客户ID对数据集做分组,每个客户的所有行对应一个分组- 对每个分组的
ID_value列求最大值,transform方法会将聚合得到的单值,自动填充到该分组的所有行上,直接完成全量替换
执行上述代码后,你的样例数据处理结果如下:
| Customer ID | Customer Name | Price_Val | ID_value |
|---|---|---|---|
| 5015 | AXN | 17.12 | 4 |
| 5015 | AXN | 2.08 | 4 |
| 5015 | AXN | 3.45 | 4 |
| 7315 | BXN | 2.22 | 2 |
| 7315 | BXN | 8.46 | 2 |
| 3283 | CXN | 88 | 4 |
| 3283 | CXN | 0.46 | 4 |
| 3283 | CXN | 6.46 | 4 |
内容的提问来源于stack exchange,提问作者rohi
相关产品推荐
相关产品推荐

