Добавить колонку с нумерацией

Есть DataFrame

myData ={'Order':[1,1,2,3,18,18,18,18,19,19,16,17],
     'Date':['2016-09-09','2016-09-09','2016-09-09','2016-09-10','2016-09-22','2016-09-22','2016-09-23','2016-09-24','2016-09-21','2016-09-22','2016-09-20','2016-09-21'],
     'A':[10,12,15,10,11,14,13,20,34,10,5,10]}
df = pd.DataFrame(myData)

'''

|   |Order| Date   | A |
|---|-----|--------|---|
|0  |1    |09/09/16| 10|
|1  |1    |09/09/16| 12|
|2  |2    |09/09/16| 15|
|3  |3    |10/09/16| 10|
|4  |18   |22/09/16| 11|
|5  |18   |22/09/16| 14|
|6  |18   |23/09/16| 13|
|7  |18   |24/09/16| 20|
|8  |19   |21/09/16| 34|
|9  |19   |22/09/16| 10|
|10 |16   |20/09/16|  5|
|11 |17   |21/09/16| 10|

''' Нужно добавить колонку с нумерацией номера дня внутри каждого Ордера. Т.е. с началом нового Ордера в колонке Order, начинается нумерация дней в соответствии с колонкой Date. Вот желаемый результат. '''

|   |Order| Date   | A |Day_Number|
|---|-----|--------|---|----------|
|0  |1    |09/09/16| 10|    1     |
|1  |1    |09/09/16| 12|    1     |
|2  |2    |09/09/16| 15|    1     |
|3  |3    |10/09/16| 10|    1     |
|4  |18   |22/09/16| 11|    1     |
|5  |18   |22/09/16| 14|    1     |
|6  |18   |23/09/16| 13|    2     |
|7  |18   |24/09/16| 20|    3     |
|8  |19   |21/09/16| 34|    1     |
|9  |19   |22/09/16| 10|    2     |
|10 |16   |20/09/16|  5|    1     |
|11 |17   |21/09/16| 10|    1     |

''' Подскажите, пожалуйста, как можно сделать в Pandas


Ответы (1 шт):

Автор решения: MaxU

попробуйте так:

df["Day_Number"] = \
    df.groupby("Order")["Date"].apply(lambda x: (x.shift() != x).cumsum())

результат:

In [166]: df
Out[166]:
    Order        Date   A  Day_Number
0       1  2016-09-09  10           1
1       1  2016-09-09  12           1
2       2  2016-09-09  15           1
3       3  2016-09-10  10           1
4      18  2016-09-22  11           1
5      18  2016-09-22  14           1
6      18  2016-09-23  13           2
7      18  2016-09-24  20           3
8      19  2016-09-21  34           1
9      19  2016-09-22  10           2
10     16  2016-09-20   5           1
11     17  2016-09-21  10           1
→ Ссылка