删除列包含特定值的行,条件是行ab上的列的值

2024-04-26 11:56:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧

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\u创建的时间戳或另一个case\u重新打开的时间戳之后有一个无意义的case\u重新打开的时间戳。这些无意义的重新打开的时间戳可以安全地丢弃。你知道吗

我在用轮班

 df = df.loc[df["state"].shift() != df["state"]] 

为了摆脱案例重新打开->;案例重新打开案例,但我不知道如何修复创建的案例->;案例重新打开案例。然后我打算使用.diff()来计算时间差。你知道吗


Tags: 数据gtdataframedfdateemail时间案例
1条回答
网友
1楼 · 发布于 2024-04-26 11:56:47

也许你可以试着用“email\u sent”来定位行。然后计算“email\u sent”和上次“email\u 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()

相关问题 更多 >