为DataFrame添加按Transaction#分组的递增序号列
解决按Transaction#分组生成组内递增序号的问题
嘿,这个需求用pandas处理起来特别简单!咱们直接通过分组+累计计数的方式就能实现你要的效果,具体步骤如下:
1. 先构造示例DataFrame
先把你给出的原始数据转换成pandas的DataFrame:
import pandas as pd data = { 'Transaction#': [101, 101, 101, 102, 102, 103], 'ID': ['ABC', 'EFG', 'IJK', 'LMO', 'PQR', 'STU'] } df = pd.DataFrame(data)
2. 新增组内递增序号列
使用groupby按Transaction#分组,然后用cumcount()方法获取组内的累计索引(注意这个方法默认从0开始计数,所以我们要加1让它从1开始):
df['Number'] = df.groupby('Transaction#').cumcount() + 1
3. 查看最终结果
执行完上面的代码后,你的DataFrame就变成了预期的样子:
| Transaction# | ID | Number |
|---|---|---|
| 101 | ABC | 1 |
| 101 | EFG | 2 |
| 101 | IJK | 3 |
| 102 | LMO | 1 |
| 102 | PQR | 2 |
| 103 | STU | 1 |
简单解释下:groupby('Transaction#')把数据按交易号分成了三个组,cumcount()为每个组内的行分配从0开始的序号,加1之后就刚好是你要的从1开始的递增数字啦~
内容的提问来源于stack exchange,提问作者shekharamit
相关产品推荐
相关产品推荐

