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