如何使用Pandas DataFrame执行分组特定计算生成新列C
解决Pandas分组生成连续计数器列的问题
嘿,我明白你要做的事了——按A列的分组给每个组里的行配上从1开始的连续序号作为C列对吧?其实用Pandas的groupby配合cumcount()就能轻松搞定,我给你一步步拆解:
首先先简化下你创建DataFrame的代码,i < 5 == 0可以直接写成i < 5,这样逻辑更清晰,生成的结果是一样的:
import pandas as pd df = pd.DataFrame({'A': [i < 5 for i in range(0, 10)], 'B': [i for i in range(0, 10)]})
接下来就是生成你要的C列,核心代码就一行:
df['C'] = df.groupby('A').cumcount() + 1
代码解释
df.groupby('A'):把原DataFrame按A列的布尔值分成两组(True组和False组)cumcount():给每个分组内的行分配从0开始的连续索引- 加1之后,就把0起始的索引转换成了你需要的从1开始的计数器
运行后你就能得到完全符合预期的结果:
| A | B | C | |
|---|---|---|---|
| 0 | True | 0 | 1 |
| 1 | True | 1 | 2 |
| 2 | True | 2 | 3 |
| 3 | True | 3 | 4 |
| 4 | True | 4 | 5 |
| 5 | False | 5 | 1 |
| 6 | False | 6 | 2 |
| 7 | False | 7 | 3 |
| 8 | False | 8 | 4 |
| 9 | False | 9 | 5 |
内容的提问来源于stack exchange,提问作者Ammar
相关产品推荐
相关产品推荐

