У меня есть объект DataFrame pandas со столбцом с именем 'order_id' . Строки с одинаковым идентификатором принадлежат одному и тому же порядку (размер может быть любым от 1 до 1000), например ::100100
sales_orders = {
'order_id': [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4],
# multiple other fields
}
df = pd.DataFrame(sales_orders)
Мне нужно разделить группы на более мелкие куски, основываясь на отсеченном значении, как, например, в 3. В идеале, ничто иное не изменится, кроме суффикса столбца, т.е.
'order_id': [1-0, 1-0, 1-0, 1-1, 1-1, 1-1, 1-2, 2, 2, 2, 3-0, 3-0, 3-0, 3-1, 3-1, 3-1, 3-2, 3-2, 3-2, 4]
Я предполагаю, что можно просто пройти по группам и прикоснуться к каждой группе индивидуально в цикле for следующим образом:
for order_id, group in df.groupby(by=['order_id']):
if group.shape[0] > 2:
# change column line by line
Но это выглядит невероятно непандарно и ужасно медленно. Таким образом, я был бы признателен за разумное, производительное и читаемое решение;)
Заранее спасибо за помощь!