在python中为一组记录设置批号。

我在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。

解决方案:

你可以用 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

给TA打赏
共{{data.count}}人
人已打赏
未分类

在.NET中初始化基类

2022-9-8 7:53:40

未分类

SQL - 更新多个表,同一列在一个查询中。

2022-9-8 8:04:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索