【发布时间】:2017-07-16 08:21:08
【问题描述】:
我有一个带有两列的 pandas 数据框 - “Day”和“Event”。在每一天,可以发生任意数量的事件,每个事件都用一个字符表示。我想构建一个额外的列,指示自上次发生事件以来已经过去了多少天。下面的代码可以说明这一点:
>>> import pandas as pd
>>> event_data = pd.DataFrame({'Day':[1,1,1,1,2,2,2,3,3,4,4,4,4],
'Event':['A','B','C','D','B','F','A','B','C','G','A','B','D']})
>>> print(event_data)
Day Event
0 1 A
1 1 B
2 1 C
3 1 D
4 2 B
5 2 F
6 2 A
7 3 B
8 3 C
9 4 G
10 4 A
11 4 B
12 4 D
我想要一个额外的列“days_since_event”,如下所示:
Day Event Days_since_event
0 1 A -1
1 1 B -1
2 1 C -1
3 1 D -1
4 2 B 1
5 2 F -1
6 2 A 1
7 3 B 1
8 3 C 2
9 4 G -1
10 4 A 2
11 4 B 1
12 4 D 3
第 12 行的值为 3,因为事件“D”发生在第 4 天,而上一次发生是在第 1 天,这意味着自事件“D”上次发生以来已经过去了 3 天。值为 -1 的行表示该事件是当天第一次发生。
执行此操作的最佳计算方法是什么?原始数据集有超过 1000 万行,使用循环或重复数据子集太慢。
【问题讨论】:
标签: python python-3.x pandas