Установка номера партии для набора записей в python - PullRequest
1 голос
/ 23 апреля 2020

У меня есть следующие данные в csv

id,date,records
1,2019-03-28 01:22:12,5
2,2019-03-29 01:23:23,5
3,2019-03-30 01:28:54,5
4,2019-03-28 01:12:21,2
5,2019-03-12 01:08:11,1
6,2019-03-28 01:01:21,12
7,2019-03-12 01:02:11,1

Я пытаюсь добиться того, чтобы установить номер партии, который должен увеличиваться после того, как значение скользящей суммы пересекает 15, а также должна сбрасываться скользящая сумма, поэтому я пытаюсь создать пакет для записей с общей суммой скользящих сумм 15

Например. если скользящая сумма становится 15, значение номера партии должно увеличиваться, что дало бы мне строки, содержащие общее значение 15.

, поэтому вывод, который я ищу, - это если накопленная сумма превышает 15 -

id,date,records, moving_sum,batch_number
1,2019-03-28 01:22:12,5,5,1
2,2019-03-29 01:23:23,5,10,1
3,2019-03-30 01:28:54,5,15,1
4,2019-03-28 01:12:21,2,2,2
5,2019-03-12 01:08:11,1,1,2
6,2019-03-28 01:01:21,2,12,2
7,2019-03-12 01:02:11,1,1,3

Я использую pandas для этого, но не могу сбросить значение moving_sum и перенести предыдущий набор batch_number.

1 Ответ

1 голос
/ 23 апреля 2020

Вы можете сделать что-то подобное, используя df.iterrows().

moving = []
batch = []
cntr = 1
for idx,row in df.iterrows():
  if len(moving) == 0:
    moving.append(row['records'])
    batch.append(cntr)
  elif moving[-1] < 15:
    moving.append(row['records']+moving[-1])
    batch.append(cntr)
  elif moving[-1] >= 15:
    moving.append(row['records'])
    cntr += 1
    batch.append(cntr)

df['moving_sum'] =  moving
df['batch_number'] = batch
id  records moving_sum  batch_number
0   1   5   5   1
1   2   5   10  1
2   3   5   15  1
3   4   2   2   2
4   5   1   3   2
5   6   12  15  2
6   7   1   1   3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...