2017-06-02 24 views
0

我有一個場景,我必須讀取Excel文件並計算每個狀態的日期差異並將輸出存儲在另一個Excel文件中。計算Excel數據中的日期差異

date name status 
1/15/2017 ABC insert_start 
1/16/2017 ABC insert_complete 
1/17/2017 DEF remove_start 
1/18/2017 DEF remove_complete 
1/19/2017 GHI create_start 
1/20/2017 GHI create_complete 

我需要在以下格式的輸出:

name created inserted removed 
ABC  0  1   0 
DEF  0  0   1 
GHI  1  0   0 

哪裏值1ABC日期差異來完成插入的狀態。 任何幫助將不勝感激。

+1

請告訴我們您曾嘗試使用,並說明它是如何或不符合要求的代碼。請記住,SO不是免費的代碼寫入服務。 – lit

+0

到目前爲止您嘗試過什麼? – Mureinik

+0

我嘗試使用openpyxl包來讀取excel文件。不知道如何迭代每個名稱並將其轉換爲新格式。 – reesh

回答

0

比方說df是通過加載excel文件(看起來像你的例子中的那個)創建的數據框。你可能有

df = pd.read_csv('foo.csv', sep='\s+', parse_dates=['date']) 

現在裝好了,你可以這樣做:

pivoted = df.pivot('name', 'status').fillna(0) 
ops = ("create", "insert", "remove") 
result = pd.concat([ pivoted['date', op + '_complete'] 
        - pivoted['date', op + '_start'] 
        for op in ops], axis=1) 
result.columns = ops 
#  create insert remove 
#name       
#ABC 0 days 1 days 0 days 
#DEF 0 days 0 days 1 days 
#GHI 1 days 0 days 0 days 
+0

謝謝。忘了提及我會在我不想考慮的文件中有重複的狀態。我收到一個錯誤「ValueError:索引包含重複條目,無法重新塑造」。請幫助 – reesh

+0

請更新您的示例。 – DyZ