2015-10-07 4 views
1

У меня есть панд кадр, который выглядит следующим образом:Группировка и автоматическое приращение на основе столбцов в панд

enter image description here

Есть ли способ, чтобы добавить цифры в последнем столбце без перебора данных Рамка?

Я играл с результатами Grouping and auto incrementing group id in pandas но не сделали это работа для моих целей

Вот код для получения dataframe

import pandas as pd 
columns = ['Product','SubProd', 'NeedThis'] 
Index=['4/20/2012','4/27/2012','5/4/2012','5/11/2012','5/18/2012','4/20/2012', 
'4/27/2012','5/4/2012','5/11/2012','5/18/2012','5/25/2012','10/31/2014','11/7/2014', 
'11/14/2014','11/21/2014','11/28/2014'] 
datas = {'Product' : ['A','A','A','A','A','A','A','A','A','A','A','B','B','B','B','B'], 
     'SubProd' : ['BL','BL','BL','BL','BL','lk','lk','lk','lk','lk','lk','po','po','po','po','po']} 
df = pd.DataFrame(data=datas, index=Index) 

print(df) 

Благодарности

+0

К сожалению есть вы хотите 'df.groupby ('SubProd'). rank (method = 'dense') + 1'? – EdChum

+0

К сожалению, это создает таблицу с датами и продуктом = 2 – kizofilax

ответ

1
In [10]: df['counter'] = df.groupby(['Product','SubProd']).cumcount()+1 

In [11]: df 
Out[11]: 
      Product SubProd counter 
4/20/2012  A  BL  1 
4/27/2012  A  BL  2 
5/4/2012   A  BL  3 
5/11/2012  A  BL  4 
5/18/2012  A  BL  5 
4/20/2012  A  lk  1 
4/27/2012  A  lk  2 
5/4/2012   A  lk  3 
5/11/2012  A  lk  4 
5/18/2012  A  lk  5 
5/25/2012  A  lk  6 
10/31/2014  B  po  1 
11/7/2014  B  po  2 
11/14/2014  B  po  3 
11/21/2014  B  po  4 
11/28/2014  B  po  5 
+0

Удивительный! Это прекрасно работает, спасибо! – kizofilax

Смежные вопросы