我想创建一个新列,因为' fold'并根据quote_id的组分配新的值。如果3 quote_id相同则应分配1,接下来4 quote_id相同然后分配2。
简而言之,它应该为一组特定的quote_id分配一个数字。 我一直在尝试,但我没有得到预期的结果。
i=1 def func(x): x['fold']=i return x in_df.groupby('quote_id').apply(func) i=i+1
我的输出应如下所示。
quote_id fold
1300079-DE 1
1300079-DE 1
1300079-DE 1
1300185-DE 2
1300560-DE 3
1301011-DE 4
1301011-DE 4
1301011-DE 4
1301644-DE 5
1301907-DE 6
1301907-DE 6
1301907-DE 6
答案 0 :(得分:1)
使用method='dense'
:
rank
In [10]:
df['fold'] = df['quote_id'].rank(method='dense')
df
Out[10]:
quote_id fold
0 1300079-DE 1
1 1300079-DE 1
2 1300079-DE 1
3 1300185-DE 2
4 1300560-DE 3
5 1301011-DE 4
6 1301011-DE 4
7 1301011-DE 4
8 1301644-DE 5
9 1301907-DE 6
10 1301907-DE 6
11 1301907-DE 6