python - 在新列中添加唯一标识符,直到在另一列上满足条件
问题描述
我有一个 npartition=8 的 dask 数据框,这是数据的快照:
id1 id2 Page_nbr record_type
St1 Sc1 3 START
Sc1 St1 5 ADD
Sc1 St1 9 OTHER
Sc2 St2 34 START
Sc2 St2 45 DURATION
Sc2 St2 65 END
Sc3 Sc3 4 START
我想在record_type之后添加一列,并根据记录类型的条件添加一个唯一的group_id,所以直到下一个record_type=START添加相同的唯一group_id,输出将如下所示:
id1 id2 Page_nbr record_type group_id
St1 Sc1 3 START 1
Sc1 St1 5 ADD 1
Sc1 St1 9 OTHER 1
Sc2 St2 34 START 2
Sc2 St2 45 DURATION 2
Sc2 St2 65 END 2
Sc3 Sc3 4 START 3
group_id 可以是任何唯一编号。由于数据框很大,遍历行可能不是最佳选择。想知道是否有任何pythonic方法可以做到这一点?
解决方案
取“record_type”列,与“START”比较,然后计算cumsum
:
ddf['group_id'] = ddf['record_type'].eq('START').cumsum()
ddf.compute()
id1 id2 Page_nbr record_type group_id
0 St1 Sc1 3 START 1
1 Sc1 St1 5 ADD 1
2 Sc1 St1 9 OTHER 1
3 Sc2 St2 34 START 2
4 Sc2 St2 45 DURATION 2
5 Sc2 St2 65 END 2
6 Sc3 Sc3 4 START 3
推荐阅读
- javascript - 为什么我在发出 get 请求时会收到未处理的 promise 错误
- excel - 将 .xlsm 文件转换为 .xls 并使用 Excel VBA 通过 Outlook 发送附件
- javascript - 如何覆盖 Google Cloud Tasks Node.js 客户端的重试配置
- postgresql-10 - 撤消在另一个函数中调用的函数事务
- android - Android BottomNavigationBar 每个选项卡的唯一图标色调列表?
- mercurial - 如何从自定义挂钩中读取配置设置?
- java - 如何与加密的 SQS 队列交互?KMS 密钥访问不起作用
- python - 哪种文件处理方式更好:'r' + 'a' 或 'r+'?
- android - 可绘制的正确位置不正确
- tensorflow - pytorch 中 tf.nn.softmax_cross_entropy_with_logits 的等价物是什么?