如何用Pandas按A、B分组并添加Group_id标签?
解决方案
你可以用以下两种常见方法实现需求:
方法1:使用groupby + ngroup()
利用pandas的分组功能,按A、B列分组后,通过ngroup()生成组序号(默认从0开始),加1即可得到从1起始的Group_id:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'A': ['A-1', 'A-2', 'A-2', 'A-3'], 'B': ['B-1', 'B-2', 'B-2', 'B-4'], 'C': ['C-1', 'C-2', 'C-3', 'C-4'] }) # 添加Group_id df['Group_id'] = df.groupby(['A', 'B']).ngroup() + 1 print(df)
输出结果:
A B C Group_id 0 A-1 B-1 C-1 1 1 A-2 B-2 C-2 2 2 A-2 B-2 C-3 2 3 A-3 B-4 C-4 3
方法2:使用factorize
将A、B列的组合转换为唯一标识,通过pd.factorize生成组id,同样加1调整起始值:
import pandas as pd df = pd.DataFrame({ 'A': ['A-1', 'A-2', 'A-2', 'A-3'], 'B': ['B-1', 'B-2', 'B-2', 'B-4'], 'C': ['C-1', 'C-2', 'C-3', 'C-4'] }) # 合并A、B列生成唯一键,再生成Group_id df['Group_id'] = pd.factorize(df[['A', 'B']].apply(tuple, axis=1))[0] + 1 print(df)
输出结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者M Kravets
相关产品推荐
相关产品推荐

