0
我有一個有兩列 - 「日」和「事件」的熊貓數據框。在每一天,可以發生任意數量的事件,每個事件都由char表示。我想構建一個額外的列,指示自上次事件發生以來已經過去了多少天。下面的代碼可以說明這一點:Python 3.6:Pandas - 獲取較早的DataFrame列的條目發生
>>> 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萬行,使用循環或重複數據子集過慢。
工程就像一個魅力。謝謝,dune_dweller :) –