创建一个新列,并使用groupby

时间:2016-02-22 07:40:56

标签: python pandas

我想创建一个新列,因为' 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

1 个答案:

答案 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