3 回答

TA贡献1828条经验 获得超4个赞
使用factorize,但如果有重复的组,则输出值设置为相同的数字。
将ed 值与ne( !=)进行比较的另一种解决方案更通用 - 始终创建新值,如果重复组值也是如此:shiftcumsum
df['ID_new1'] = pd.factorize(df['ID_Orig'])[0]
df['ID_new2'] = df['ID_Orig'].ne(df['ID_Orig'].shift()).cumsum() - 1
print (df)
ID_Orig ID_new1 ID_new2
0 3452 0 0
1 3452 0 0
2 3452 0 0
3 6543 1 1
4 6543 1 1
5 100 2 2
6 100 2 2
7 6543 1 3 <-repeating group
8 6543 1 3 <-repeating group

TA贡献1860条经验 获得超8个赞
你可以这样做 …
import collections
l1 = [3452, 3452, 3452, 6543, 6543]
c = collections.Counter(l1)
l2 = list(c.items())
l3 = []
for i, t in enumerate(l2):
for x in range(t[1]):
l3.append(i)
for x in l3:
print(x)
这是输出:
0
0
0
1
1
添加回答
举报