我有以下数据框
df = pd.DataFrame({'State': {0: "case_created", 1: "case_reopened", 2:"email_sent", 3: "case_reopened", 4: "email_sent", 5: "case_reopened", 6 : "email_sent", 7: "case_reopened"},
'date': {0: '2016-10-13T14:10:41Z', 1: '2016-10-13T14:10:41Z', 2:'2016-10-13T15:26:19Z',
3: '2016-10-14T15:26:19Z', 4: '2016-10-15T15:26:19Z', 5: '2016-10-18T15:26:19Z',
6 :'2016-10-17T15:26:19Z', 7: '2016-10-13T15:26:19Z'}}, columns=['State', 'date'])
我正在尝试计算(case_created OR case_reopened)和email_sent之间的时间。
问题在于,由于我无法编辑的奇怪的工作流程解决方法,有时在case_created时间戳或另一个case_reopened时间戳之后存在无意义的case_reopened时间戳。可以安全地丢弃这些无意义的case_reopened时间戳。
我正在使用shift
df = df.loc[df["state"].shift() != df["state"]]
摆脱case_reopened - > case_reopened案例,但我不知道如何修复case_created - > case_reopened案例。然后我打算用.diff()来计算时差。
答案 0 :(得分:1)
也许您可以尝试使用'email_sent'找到行。然后计算'email_sent'和最后'email_sent'之后的条目之间的时差。如下:
df['date'] = pd.to_datetime(df['date'])
email_sent = df['State']=='email_sent'
rs = [0,]
for idx, v in email.iteritems():
if v:
rs.append(idx)
rs.append(idx+1)
df['date'][rs].diff()