6
使用Python 3.6和Pandas 0.19.2:python pandas:在一個羣組中的2個日期之間的差異
我有一個DataFrame包含事務處理的解析日誌文件。每行都有時間戳,包含一個transactionid,並且可以表示事務的開始或結束(所以每個transactionid有1行開始和1行結束)。
其他信息也可以出現在每個結束行中。
我想通過用startdate減去結束日期來提取每個事務的持續時間,並保留其他信息。
樣品輸入:
import pandas as pd
import io
df = pd.read_csv(io.StringIO('''transactionid;event;datetime;info
1;START;2017-04-01 00:00:00;
1;END;2017-04-01 00:00:02;foo1
2;START;2017-04-01 00:00:02;
3;START;2017-04-01 00:00:02;
2;END;2017-04-01 00:00:03;foo2
4;START;2017-04-01 00:00:03;
3;END;2017-04-01 00:00:03;foo3
4;END;2017-04-01 00:00:04;foo4'''), sep=';', parse_dates=['datetime'])
其中給出下列數據幀:
transactionid event datetime info
0 1 START 2017-04-01 00:00:00 NaN
1 1 END 2017-04-01 00:00:02 foo1
2 2 START 2017-04-01 00:00:02 NaN
3 3 START 2017-04-01 00:00:02 NaN
4 2 END 2017-04-01 00:00:03 foo2
5 4 START 2017-04-01 00:00:03 NaN
6 3 END 2017-04-01 00:00:03 foo3
7 4 END 2017-04-01 00:00:04 foo4
預期輸出:
一個新數據幀,例如:
transactionid start_date end_date duration info
0 1 2017-04-01 00:00:00 2017-04-01 00:00:02 00:00:02 foo1
1 2 2017-04-01 00:00:02 2017-04-01 00:00:03 00:00:01 foo2
2 3 2017-04-01 00:00:02 2017-04-01 00:00:03 00:00:01 foo3
3 4 2017-04-01 00:00:03 2017-04-01 00:00:04 00:00:01 foo4
我曾嘗試:
由於2 consecutives線並不總是與同一個交易,我申請.groupby(by='transactionid')
我的數據幀。我現在試圖根據我的需要「拼合」每個組。
良好的天哪,MaxU。西部最快的手指。 –
@ScottBoston,謝謝! :) – MaxU
Stackoverflow的人永遠不會驚訝我! :)謝謝,那正是我正在尋找的! – Guillaume