2017-06-02 47 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