Pandas:如何基于列分组为DataFrame添加类索引列?
为Pandas DataFrame添加分组内的类索引列
要实现你想要的效果,最简洁的方法是使用Pandas的groupby()结合cumcount()函数——cumcount()会为每个分组内的元素分配从0开始的序号,我们只需要给它加1就能得到从1开始的计数。
完整代码示例
首先,先构造和你示例一致的DataFrame:
import pandas as pd data = { 'col1': ['AAAA', 'AAAA', 'AAAA', 'AAAA', 'BBBB', 'BBBB', 'CCCC', 'CCCC', 'CCCC', 'CCCC', 'CCCC'], 'col2': ['fooW', 'fooX', 'fooY', 'fooZ', 'fooW', 'fooX', 'barV', 'barW', 'barX', 'barY', 'barZ'] } df = pd.DataFrame(data)
接下来添加col3列:
df['col3'] = df.groupby('col1').cumcount() + 1
验证结果
运行后你会得到和你预期完全一致的DataFrame:
col1 col2 col3 0 AAAA fooW 1 1 AAAA fooX 2 2 AAAA fooY 3 3 AAAA fooZ 4 4 BBBB fooW 1 5 BBBB fooX 2 6 CCCC barV 1 7 CCCC barW 2 8 CCCC barX 3 9 CCCC barY 4 10 CCCC barZ 5
原理说明
df.groupby('col1'):按照col1的值对DataFrame进行分组,把相同col1值的行归为一组。.cumcount():对每个分组内的行进行从0开始的连续计数。+ 1:把计数从0起始调整为你需要的1起始。
这个方法高效且简洁,完全适配你的需求,不管分组的大小如何变化都能自动正确计数。
内容的提问来源于stack exchange,提问作者bt24877
相关产品推荐
相关产品推荐

