Добавить колонку с нумерацией
Есть 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