Python Pandas-按所有列分组并在原始数据框中标记

Python Pandas-按所有列分组并在原始数据框中标记,python,pandas,Python,Pandas,我有一个DataFrame,其中列'Id'是唯一的,还有'a',B',C'等等 在不同的行中,所有值'A',B',C'都是相同的。我想给他们一个组名(1的运行索引) 例如: df = pd.DataFrame({"A": [1, 1, 1, 2], "B": [3, 4, 4, 4], "C": [5, 5, 5, 5]}) df Out[127]: A B C 0 1 3 5 1 1 4 5 2 1 4 5 3 2 4 5 将成为 A B C

我有一个
DataFrame
,其中列
'Id'
是唯一的,还有
'a',B',C'
等等

在不同的行中,所有值
'A',B',C'
都是相同的。我想给他们一个组名(1的运行索引)

例如:

df = pd.DataFrame({"A": [1, 1, 1, 2], "B": [3, 4, 4, 4], "C": [5, 5, 5, 5]})
df
Out[127]: 
   A  B  C
0  1  3  5
1  1  4  5
2  1  4  5
3  2  4  5
将成为

   A  B  C  grp
0  1  3  5    1
1  1  4  5    2
2  1  4  5    2
3  2  4  5    3
我知道我可以按
['A','B','C']
分组并获取密钥,但除此之外,我必须以未优化的方式迭代密钥和数据帧。我无法以优化的方式执行此操作

使用:

如果列已排序:

df['grp'] = pd.factorize([tuple(x) for x in df.values])[0] + 1

n组()。。。该死的,我用了没有支架的ngroup,结果被卡住了。谢谢你,耶斯雷尔!在回答重复的问题之前,你能更仔细一点吗?这是我今晚第二次抓到你了。
df['grp'] = pd.factorize([tuple(x) for x in df.values])[0] + 1