2016-12-06 45 views
0

值條件,我有以下數據框刪除行,其中列包含一定值的列對行上方

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時間戳可以安全地丟棄。

我使用移

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

擺脫case_reopened的 - > case_reopened情況下,但我在一個不知如何修復case_created - > case_reopened情況。然後我打算使用.diff()來計算時差。

回答

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() 
相關問題